Struts2学习笔记之自定义拦截器
来源:互联网 发布:乐易编程 编辑:程序博客网 时间:2024/05/16 09:09
Struts2学习笔记
第十记:自定义拦截器
注:以用户登录拦截为例,session为空不允许操作。
1、编写Action方法类
public class UserAction{
private String message;
public String getMessage(){
return this.message;
}
public void setMessage(String message){
this.message=message;
}
public String execute() throw Exception{
注:以用户登录拦截为例,session为空不允许操作。
1、编写Action方法类
public class UserAction{
private String message;
public String getMessage(){
return this.message;
}
public void setMessage(String message){
this.message=message;
}
public String execute() throw Exception{
//do something
return "success";//设置想要到达的视图
}
//................
}
2、Session实现用户登录拦截
原理:判断Session中用于记录用户的登录状态是否为空。
设置Session的属性值,在login.jsp页面设置:
<%
User user=new User("zhangsan","123456");
request.getSession().setAttribute("user",user);
%>
使用EL表达式接收页面消息: ${message}
3、实现自定义拦截器
自定义拦截器需要实现Interceptor接口:
public class MyInterceptor implements Interceptor {
public void destroy() {
// TODO Auto-generated method stub
}
public void init() {
// TODO Auto-generated method stub
}
public String intercept(ActionInvocation invocation) throws Exception {
Object user=ActionContext.getContext().getSession().get("user");
if(user!=null)return invocation.invoke();
else{
ActionContext.getContext.put("message","用户无该操作权限!");
return "message";
}
}
}
4、struts.xml下配置消息页面和注册拦截器
<!-- 配置消息页面 -->
<global-results>
<result name="message">/WEB-INF/page/message.jsp</results>
<result name="success">/WEB-INF/page/index.jsp</results>
</global-results>
</global-results>
<!-- 配置Action类 -->
<action name="list_*" class="com.struts.action.UserAction" method="{1}"></action>
<!-- 注册拦截器 -->
<interceptors>
<interceptor name="promission" class="com.struts.interceptor.MyInterceptor"></interceptor>
</interceptors>
5、拦截器的引用
在action中的引用
<action name="user" class="com.struts.action.UserAction">
<interceptor-ref name="permission"/>
</action>
注:在action中引用拦截器时,默认的拦截器会失效。
6、拦截器栈
为了解决自定义拦截器影响而使struts2的默认拦截器失效,故引入堆栈。
<interceptor-stack name="permissionStack">
<interceptor-ref name="defaultStack"/><!-- 必须先调用默认的栈拦截器实现 -->
<interceptor-ref name="permission"/>
</interceptor-stack>
设置全局的默认拦截器:
<default-interceptor-ref name="permissionStack"/>
注:全局的默认拦截器与<interceptors></interceptors>同级。
return "success";//设置想要到达的视图
}
//................
}
2、Session实现用户登录拦截
原理:判断Session中用于记录用户的登录状态是否为空。
设置Session的属性值,在login.jsp页面设置:
<%
User user=new User("zhangsan","123456");
request.getSession().setAttribute("user",user);
%>
使用EL表达式接收页面消息: ${message}
3、实现自定义拦截器
自定义拦截器需要实现Interceptor接口:
public class MyInterceptor implements Interceptor {
public void destroy() {
// TODO Auto-generated method stub
}
public void init() {
// TODO Auto-generated method stub
}
public String intercept(ActionInvocation invocation) throws Exception {
Object user=ActionContext.getContext().getSession().get("user");
if(user!=null)return invocation.invoke();
else{
ActionContext.getContext.put("message","用户无该操作权限!");
return "message";
}
}
}
4、struts.xml下配置消息页面和注册拦截器
<!-- 配置消息页面 -->
<global-results>
<result name="message">/WEB-INF/page/message.jsp</results>
<result name="success">/WEB-INF/page/index.jsp</results>
</global-results>
</global-results>
<!-- 配置Action类 -->
<action name="list_*" class="com.struts.action.UserAction" method="{1}"></action>
<!-- 注册拦截器 -->
<interceptors>
<interceptor name="promission" class="com.struts.interceptor.MyInterceptor"></interceptor>
</interceptors>
5、拦截器的引用
在action中的引用
<action name="user" class="com.struts.action.UserAction">
<interceptor-ref name="permission"/>
</action>
注:在action中引用拦截器时,默认的拦截器会失效。
6、拦截器栈
为了解决自定义拦截器影响而使struts2的默认拦截器失效,故引入堆栈。
<interceptor-stack name="permissionStack">
<interceptor-ref name="defaultStack"/><!-- 必须先调用默认的栈拦截器实现 -->
<interceptor-ref name="permission"/>
</interceptor-stack>
设置全局的默认拦截器:
<default-interceptor-ref name="permissionStack"/>
注:全局的默认拦截器与<interceptors></interceptors>同级。
- Struts2学习笔记之自定义拦截器
- Struts2学习笔记之自定义拦截器
- JAVA-Struts2学习之自定义拦截器
- struts2学习笔记之拦截器(Interceptor)
- struts2学习笔记之拦截器(Interceptor)
- J2EE系列之Struts2学习笔记(十三)--自定义拦截器示例之登录功能实现
- struts2自定义拦截器笔记
- 黑马程序员---struts2学习笔记之六(自定义拦截器)
- J2EE系列之Struts2学习笔记(十二)--自定义拦截器
- Struts2之自定义拦截器
- struts2学习笔记(9)——自定义拦截器
- Struts2学习笔记——自定义拦截器技术
- 【Struts2学习笔记(10)】自定义拦截器管理权限访问
- struts2学习笔记(5)---自定义拦截器
- Struts2学习笔记(十一)——自定义拦截器
- JAVA_WEB Struts2学习:struts2自定义拦截器
- javaweb之struts2学习四---自定义拦截器
- 拦截器---struts2学习笔记
- Memcache简介及安装手册
- Struts2学习笔记之文件上传
- android 获取listview checkbox选择的值
- Winsock IO模型之Overlapped模型
- Initramfs文件系统的制作
- Struts2学习笔记之自定义拦截器
- 哎,拿这个错没办法了,实在是没办法了:java.sql.SQLException,Errcode: 28 - No space left on device
- 计算机网络笔试题
- Qt 编码设置
- java正则表达式(三)
- android笔记
- Struts2学习笔记之输入校验
- 有汉字的汉字首个字母方法(C#)
- WebRTC体系结构