Struts-pattern.xml name=\ 说明:*和{1}是相对应的关系。
method=\method=\class=” 8.4.3 映射三
需求:在TeacherAction中有增、删、改、查的方法。这个时候配置文件怎么写比较简单? Pattern.jsp 通配符映射实例3: struts-pattern.xml 说明:*和method的属性值保持一致。 延伸: 第一个*匹配{1},第二个*匹配{2} 9 全局结果类型
9.1 说明
当很多提交请求跳转到相同的页面,这个时候,这个页面就可以成为全局的页面。在struts2中提供了全局页面的配置方法。
9.2 例子
Struts-pattern.xml
10.1 说明
通过前面的练习大家都知道,在action的方法中与servlet的所有的API是没有任何关系的。所以在struts2中做到了aciton与serlvet的松耦合,这点是非常强大的。但是如果没有HttpServletRequest,HttpServletSession,ServletContext有些功能是没有办法完成的。比如购物车程序,需要把购买的物品放入session中。所以就得找一些路径使得在struts2中和serlvet的API相结合。
10.2 实现一
Struts2中提供了ServletActionContext类访问servlet的api。
Servlet.jsp 通过SerlvetActionContext类访问servlet的API:
ServletAction public String testServletAPI(){ //访问request HttpServletRequest request = ServletActionContext.getRequest(); //访问session 对session进行了二次封装 Map sessionMap = ServletActionContext.getContext().getSession(); //访问application ServletContext servletContext = ServletActionContext.getServletContext(); return \10.3 实现二 ServletAction public class ServletAction extends ActionSupport implements ServletContextAware, SessionAware,ServletRequestAware{ private HttpServletRequest request; private Map sessionMap; private ServletContext servletContext; public String testServletAPI2(){ System.out.println(this.servletContext); System.out.println(this.sessionMap); System.out.println(this.request); return \ } public void setServletContext(ServletContext context) { // TODO Auto-generated method stub this.servletContext = context; } public void setSession(Map
11 拦截器
假设有一种场景:
在aciton的一个方法中,要进行权限的控制。如果是admin用户登入,就执行该方法,如果不是admin用户登入,就不能执行该方法。
11.1 实现方案一
AccessAction public String testAccess(){ if(this.username.equals(\ //执行业务逻辑方法 return SUCCESS; }else{ //不执行 return \ } } 说明:
1、 这样做,程序的结构不是很好。原因是权限的判断和业务逻辑的
方法紧密耦合在了一起。如果权限的判断很复杂或者是业务逻辑很复杂会造成后期维护的非常困难。所以结构不是很好
2、 这种形式只能控制一个action中的一个方法。如果很多action中
的很多方法都需要这种控制。会导致大量的重复代码的编写。
11.2 实现方案二
动态代理可以实现。请参见cn.itcast.struts.jdkproxy包下的类。
11.3 实现方案三
在struts2中,用拦截器(interceptor)完美的实现了这一需求。在struts2中, 内置了很多拦截器,在struts-default.xml文件中可以看出。用户还可以自定义
自己的拦截器。自定义拦截器需要以下几点: 1、 在配置文件中: 包括两个部分:声明拦截器栈和使用拦截器栈
struts-interceptor.xml 2、 在拦截器类中 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库struts2(4)在线全文阅读。
相关推荐: