structs2框架入门(一)
2016-06-23 07:38
441 查看
1Mvc与servlet
1.1Servlet的优点
1、是mvc的基础,其他的框架比如struts1,struts2,webwork都是从servlet基础上发展过来的。所以掌握servlet是掌握mvc的关键。
2、Servlet把最底层的api暴漏给程序员,使程序员更能清楚的了解mvc的各个特点。
3、程序员可以对servlet进行封装。Struts2就是从servlet中封装以后得到的结果。
4、市场上任何一个mvc的框架都是servlet发展过来的,所以要想学好struts2这个框架,了解servlet的运行机制很关键。
1.2Servlet的缺点
1、每写一个servlet在web.xml中都要做相应的配置。如果有多很servlet,会
导致web.xml内容过于繁多。
2、这样的结构不利于分组开发。
3、在servlet中,doGet方法和doPost方法有HttpServletRequest和HttpServletResponse参数。这两个参数与容器相关,如果想在servlet中作单元测试,则必须初始化这两个参数。
4、如果一个servlet中有很多个方法,则必须采用传递参数的形式,分解到每一个方法中。
2重构servlet
针对servlet以上的特点,我们可以对servlet进行重构,使其开发起来更简单。更容易,更适合团队协作。
重构的目标:
1、只写一个serlvet或者过滤器,我们这里选择过滤器。
2、不用再写任何的servlet,这样在web.xml中写的代码就很少了。
3、原来需要写serlvet,现在改写action。
4、在action中把HttpServletRequest参数和HttpServletResponse参数传递过去。
5、在过滤器中通过java的反射机制调用action。
6、详细过程参照cn.itcast.action包中的内容
3Struts2介绍
1、struts2是apache组织发明的开源框架。是struts的第二代产品。
2、struts2是在struts和webwork基础上整合的全新的框架。
3、struts2的配置文件组织更合理,是企业开发很好的选择。
4、struts2的拦截器为mvc框架注入了全新的概念。
通配符
Execute方法的弊端
假设有这样的需求:
1、有一个action为PersonAction。
2、在PersonAction中要实现增、删、改、查四个方法。
3、但是在action中方法的入口只有一个execute方法
4、所以要想完成这样的功能,有一种方法就是在url链接中加参数。
那么在action中的代码可能是这样的:
可以看出这样写结构并不是很好。而通配符的出现解决了这个问题。
method属性
说明:从上述代码可以看出只要配置文件中的method属性的值和方法名称一样就可以了。但是这种写法有弊端。如果aciton中需要5个方法。则在struts的配置文件中需要写5个配置,这样会导致配置文件的篇幅很大。而且重复性也很大
动态调用方法
在url中通过action名称!方法名称可以动态调用方法。
通配符映射
映射一
映射二
映射三
1.1Servlet的优点
1、是mvc的基础,其他的框架比如struts1,struts2,webwork都是从servlet基础上发展过来的。所以掌握servlet是掌握mvc的关键。
2、Servlet把最底层的api暴漏给程序员,使程序员更能清楚的了解mvc的各个特点。
3、程序员可以对servlet进行封装。Struts2就是从servlet中封装以后得到的结果。
4、市场上任何一个mvc的框架都是servlet发展过来的,所以要想学好struts2这个框架,了解servlet的运行机制很关键。
1.2Servlet的缺点
1、每写一个servlet在web.xml中都要做相应的配置。如果有多很servlet,会
导致web.xml内容过于繁多。
2、这样的结构不利于分组开发。
3、在servlet中,doGet方法和doPost方法有HttpServletRequest和HttpServletResponse参数。这两个参数与容器相关,如果想在servlet中作单元测试,则必须初始化这两个参数。
4、如果一个servlet中有很多个方法,则必须采用传递参数的形式,分解到每一个方法中。
2重构servlet
针对servlet以上的特点,我们可以对servlet进行重构,使其开发起来更简单。更容易,更适合团队协作。
重构的目标:
1、只写一个serlvet或者过滤器,我们这里选择过滤器。
2、不用再写任何的servlet,这样在web.xml中写的代码就很少了。
3、原来需要写serlvet,现在改写action。
4、在action中把HttpServletRequest参数和HttpServletResponse参数传递过去。
5、在过滤器中通过java的反射机制调用action。
6、详细过程参照cn.itcast.action包中的内容
3Struts2介绍
1、struts2是apache组织发明的开源框架。是struts的第二代产品。
2、struts2是在struts和webwork基础上整合的全新的框架。
3、struts2的配置文件组织更合理,是企业开发很好的选择。
4、struts2的拦截器为mvc框架注入了全新的概念。
通配符
Execute方法的弊端
假设有这样的需求:
1、有一个action为PersonAction。
2、在PersonAction中要实现增、删、改、查四个方法。
3、但是在action中方法的入口只有一个execute方法
4、所以要想完成这样的功能,有一种方法就是在url链接中加参数。
那么在action中的代码可能是这样的:
PatternAction public class PatternAction extends ActionSupport{ private String method; public String execute(){ if(method.equals("add")){ //增加操作 }else if(method.equals("update")){ //修改操作 }else if(method.equals("delete")){ //删除操作 }else{ //查询操作 } return ""; } }
可以看出这样写结构并不是很好。而通配符的出现解决了这个问题。
method属性
Pattern.jsp 访问PersonAction的add方法:<br> <a href="${pageContext.request.contextPath}/pattern/patternAction.action">测试</a><br> Struts-pattern.xml <package name="pattern" namespace="/pattern" extends="struts-default"> <action name="patternAction" method="add" class="cn.itcast.struts2.action.pattern.PatternAction"> </action> </package> PatternAction public String add(){ return "add"; }
说明:从上述代码可以看出只要配置文件中的method属性的值和方法名称一样就可以了。但是这种写法有弊端。如果aciton中需要5个方法。则在struts的配置文件中需要写5个配置,这样会导致配置文件的篇幅很大。而且重复性也很大
动态调用方法
在url中通过action名称!方法名称可以动态调用方法。
Pattern.jsp 动态调用PatternAction中的add方法:<br> <a href="${pageContext.request.contextPath}/pattern/patternAction!add.action">测试</a> struts-pattern.xml <action name="patternAction" class="cn.itcast.struts2.action.pattern.PatternAction"> </action> 说明:这样的情况在配置文件中不需要method属性
通配符映射
映射一
需求:a_add.action、b_add.action、c_add.action全部请求PatternAction的add方法 Pattern.jsp 通配符映射实例1:<br> <a href="${pageContext.request.contextPath}/pattern/a_add.action">测试</a> <a href="${pageContext.request.contextPath}/pattern/b_add.action">测试</a> <a href="${pageContext.request.contextPath}/pattern/c_add.action">测试</a> 说明:不管是a_add还是b_add还是c_add的路径都指向PatternAction的add方法。 struts-pattern.xml <action name="a_add" method="add" class="cn.itcast.struts2.action.pattern.PatternAction"> </action> <action name="b_add" method="add" class="cn.itcast.struts2.action.pattern.PatternAction"> </action> <action name="c_add" method="add" class="cn.itcast.struts2.action.pattern.PatternAction"> </action> 上述结构是很差的,经过改进如下: <action name="*_add" method="add" class="cn.itcast.struts2.action.pattern.PatternAction">
映射二
请求PersonAction和StudentAction的add方法 Pattern.jsp 通配符映射实例2: <br> <a href="${pageContext.request.contextPath}/pattern/personAction_add.action">请求personAction的add方法</a> <a href="${pageContext.request.contextPath}/pattern/studentAction_add.action">请求studentAction的add方法</a> Struts-pattern.xml <action name="personAction_add" method="add" class="cn.itcast.struts2.action.pattern.PersonAction"></action> <action name="studentAction_add" method="add" class="cn.itcast.struts2.action.pattern.StudentAction"></action> 改进如下: <action name=”*_add” method=”add” class=” cn.itcast.struts2.action.pattern.{1}”/> 说明:*和{1}是相对应的关系。
映射三
需求:在TeacherAction中有增、删、改、查的方法。这个时候配置文件怎么写比较简单? Pattern.jsp 通配符映射实例3: <a href="${pageContext.request.contextPath}/pattern/PersonAction_add.action">请求teacherAction的add方法</a> <a href="${pageContext.request.contextPath}/pattern/StudentAction_update.action">请求teacherAction的update方法</a> <a href="${pageContext.request.contextPath}/pattern/StudentAction_delete.action">请求teacherAction的delete方法</a> <a href="${pageContext.request.contextPath}/pattern/StudentAction_query.action">请求teacherAction的query方法</a> struts-pattern.xml <action name="teacherAction_*" method="{1}" class="cn.itcast.struts2.action.pattern.TeacherAction"> </action> 说明:*和method的属性值保持一致。 延伸: <action name="*_*" method="{2}" class="cn.itcast.struts2.action.pattern.{1}"> </action> 第一个*匹配{1},第二个*匹配{2}
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- JQuery+Strusts1.x无刷新登录
- C# MVC模式下商品抽奖功能实现
- Zend的MVC机制使用分析(二)
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET Mvc开发之查询数据
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC中图表控件的使用方法
- Asp.net mvc实时生成缩率图到硬盘
- 剖析ASP.NET MVC的DependencyResolver组件
- ASP.NET MVC的四种验证编程方式
- ASP.NET MVC @Helper辅助方法和@functons自定义函数的使用方法
- 浅谈JavaScript前端开发的MVC结构与MVVM结构
- 仅30行代码实现Javascript中的MVC
- asp.net MVC利用ActionFilterAttribute过滤关键字的方法
- ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)