SSH框架之Struts的拦截器案例——登陆
2017-01-05 15:29
435 查看
Struts的拦截器案例:登陆
1、需求:登陆后,显示列表!未登录,返回登陆界面, 不能显示列表!
2、案例准备:所需jar包。
3、功能实现(在此仅列出核心功能代码,完整代码已上传资源):
1)AdminDao.java
2)AdminAction.java
3)自定义拦截器:AdminCheckInterceptor.java
4)struts.xml(其中介绍了,如何配置全局拦截器与局部拦截器)
1、需求:登陆后,显示列表!未登录,返回登陆界面, 不能显示列表!
2、案例准备:所需jar包。
3、功能实现(在此仅列出核心功能代码,完整代码已上传资源):
1)AdminDao.java
package sram.dao; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import sram.entity.Admin; import sram.utils.JdbcUtils; public class AdminDao { public Admin login(Admin admin){ String sql = "select * from admin where userName=? and pwd=?"; try { return JdbcUtils.getQuerrRunner() .query( sql, new BeanHandler<Admin>(Admin.class), admin.getUserName(), admin.getPwd() ); } catch (SQLException e) { throw new RuntimeException(e); } } public List<Admin> getAll(){ String sql = "select * from admin"; try { return JdbcUtils.getQuerrRunner() .query( sql, new BeanListHandler<Admin>(Admin.class) ); } catch (SQLException e) { throw new RuntimeException(e); } } }
2)AdminAction.java
package sram.action; import java.util.List; import sram.entity.Admin; import sram.service.AdminService; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class AdminAction extends ActionSupport{ //1.封装请求数据 private Admin admin; public Admin getAdmin() { return admin; } public void setAdmin(Admin admin) { this.admin = admin; } //2.调用service private AdminService adminService = new AdminService(); //登陆 public String login(){ try { Admin adminInfo = adminService.login(admin); //判断 if(adminInfo==null){ //登陆失败 return "input"; } //登陆成功,数据保存在session中 ActionContext.getContext().getSession().put("adminInfo", adminInfo); //登陆成功 return "loginSuccess"; } catch (Exception e) { return ERROR; } } //列表 public String list(){ try { //查询全部 List<Admin> list = adminService.getAll(); //保存到request ActionContext.getContext().getContextMap().put("listAdmin", list); return "list"; } catch (Exception e) { return ERROR; } } }
3)自定义拦截器:AdminCheckInterceptor.java
package sram.interceptor; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class AdminCheckInterceptor extends AbstractInterceptor{ /** * 拦截器业务处理方法 */ public String intercept(ActionInvocation invocation) throws Exception { //拿到当前执行的方法名:判断,只要当前方法名不是login,就进行验证 //获取ActionContext对象 ActionContext ac = invocation.getInvocationContext(); //获取Action的代理对象 ActionProxy proxy = invocation.getProxy(); //获取当前执行的方法名 String methodName = proxy.getMethod(); //判断 if(!"login".equals(methodName)){ //先获取当前登陆的用户 Object obj = ac.getSession().get("adminInfo"); if(obj == null){ //没有登陆 return "input"; }else{ //当前用户已经登陆 return invocation.invoke(); } }else{ //当前用户正在登陆 return invocation.invoke(); } } }
4)struts.xml(其中介绍了,如何配置全局拦截器与局部拦截器)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="admin" extends="struts-default"> <!-- 拦截器配置,注意书写的位置 --> <interceptors> <interceptor name="loginCheck" class="sram.interceptor.AdminCheckInterceptor"></interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginCheck"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 【执行拦截器:第一种写法:当前包下的所有action都执行myStack栈】 --> <default-interceptor-ref name="myStack"></default-interceptor-ref> <!-- 全局配置 --> <global-results> <result name="error">/error.jsp</result> </global-results> <action name="admin_*" class="sram.action.AdminAction" method="{1}"> <!-- 第二种写法:只在这一个Action中执行拦截器栈 <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginCheck"></interceptor-ref>--> <!-- 第三种写法:执行用户栈(与第二种写法一样,只在当前action中执行自定栈) --> <interceptor-ref name="myStack"></interceptor-ref> <!-- 1.登陆失败 --> <result name="input">/login.jsp</result> <!-- 2.登陆成功 --> <result name="loginSuccess" type="redirectAction">admin_list</result> <!-- 3.列表展示 --> <result name="list">/WEB-INF/list.jsp</result> </action> </package> </struts>
相关文章推荐
- 【Struts2四】利用拦截器对登陆进行拦截的小案例
- struts登录案例和自定义拦截器
- SSH进阶(2)——用Struts拦截器实现登陆限制
- Struts拦截器判断用户是否登陆
- SSH框架之Struts的类型转换器、案例——多格式转换
- Struts拦截器实现拦截未登陆用户实例解析
- SSH框架(四) struts2+spring3.0的登陆示例
- SSH框架之Struts的拦截器
- struts2.X心得9--struts2自定义拦截器以及文件上传等几个拦截器使用案例
- SSH学习之Struts1入门的简单登陆案例。
- struts2.X心得9--struts2自定义拦截器以及文件上传等几个拦截器使用案例
- struts实战--登陆拦截器
- struts2入门-第一个例子==》第一个struts2实例——HelloWorld==》Struts2.0搭建和简单实例==>写一个Steuts2的经典入门案例,做了一个登陆程序作为入门例子
- SSH进阶(2)——用Struts拦截器实现登陆限制
- SSH框架之Struts的有关执行流程的面试题、配置上的共性问题、简单应用-用户登陆
- struts2.5.5+hibernate5.2.6+spring4.3.4登陆案例
- SSH框架---Struts2+hibernate实现用户登录和增删改查案例
- Struts拦截器的第一个案例
- 01-Struts登陆案例
- struts中拦截器的开发