个人心得,错误在所难免,还望同门不吝指正,转载请注明出处.
1)为什么不用基础的servlet开发?用struts开发(给你一个学习struts的理由)
一句话:简化开发,便于维护,提高效率(针对中大型应用).
详细:传统的servlet开发,有很多缺点,我曾写一个学生管理,十几个servlet,后来我根据功能模块,分成了几个servlet,一个servlet根据获取的请求method的不同,执行不同的方法,但一个servlet就包含很多方法,看起来很累赘,而且servlet很多东西都是写死的(方法返回结果--->跳转路径,业务需求--->方法),编译后无法更改,比如以前我注册后跳转到登录页面,现在需求改了,要求跳转到首页,这时要改代码,再重新编译,然后发布,可能你觉得无所谓啊,但是对于一个大型的项目来说,重新编译时需要时间的,比如淘宝,暂停服务一个小时,是不是少了很多交易,都是人民币啊.那能不能将这控制跳转的部分抽离出来呢,struts就是这干这事的,通过读取xml配置文件,达到控制的效果,而且只需要写业务逻辑,控制全部由配置文件来做,这样就不需要重新编译,重新读取配置文件就行了.(好处有很多,这里只是简单列一两个)
2)开发流程:
a) web项目,引入struts2-jar包
b)web.xml 配置核心过滤器
注意:struts版本不同,核心过滤器的位置和名字会有不同
1 25 6 9struts2 7org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 810 13struts2 11/* 12
c)开发action
package struts2_test;import com.opensymphony.xwork2.ActionSupport;/** HelloAction只是一个普通的java类,理论上不需要继承或者实现任何接口,亲测不继承不会报错. ActionSupport是一个工具类,,此类中实现了很多的实用借口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Acion的开发
所以一般情况(后者说习惯)继承这个类. */public class HelloAction extends ActionSupport{ // ActionSupport public String execute() { //1.这里的方法名字可以任意 但必须和struts.xml里的method属性一致 //2.必须无参数 //3.返回必须String System.out.println("模拟这里调用业务逻辑,service,dao等"); return "success"; //这里字符"success"也是任意 但也是和struts.xml里里相对应 } }
d)配置action src/struts.xml(xml文件位置,名字最好别改,容易报错[找不到])
success.jsp error.jsp
注意: <action>里name="xxx" 是访问路径,如 http://localhost:8080/项目名称/xxx
class="bbb"是对应的action类的路径(包名.类名的形式)
method=" aaa"是action类里对应的方法,方法返回的字符标记,会和result里name属性的比对,一样的就跳转到对应的页面,或者路径中
<package name="default" extends="struts-default" >里的default任意字符,package是为了不同包里名字相同时不会冲突,extends="struts-default"是固定写法,
3)整体目录结构如下:
最后...博主也是第一次写博客,如果这篇文章对你有一点点帮助,点个赞吧.谢谢支持.