struts2拦截器--拦截登录框为空
2018-12-30 22:06
176 查看
项目文件夹如下:
user.java也就是javabean如下 :
[code]package com.model; import java.io.Serializable; public class user implements Serializable{ private String username; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
login.jsp代码如下:
[code]<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <form action="sayHello"> <input type="text" name="username"/> <input type="password" name="password"/> <input type="submit" value="登录"/> </form> </body> </html>
2.struts.xml代码如下:
[code]<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="p2" extends="struts-default"> <interceptors> <interceptor name="checkLogin" class="com.intercept.MyintercerptCheckLogin"></interceptor> <!-- 拦截器栈里面放入所有的拦截器包括系统默认拦截器 --> <interceptor-stack name="myDefaultStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="checkLogin"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref> <global-results> <!-- 这个是公共类,所有的action都会走这个results --> <result name="input">/login.jsp</result> </global-results> <action name="sayHello" class="com.controller.UserAction" method="sayHello"> <interceptor-ref name="myDefaultStack"> <param name="checkLogin.excludeMethods">sayHello</param><!-- 拦截对象不包括sayHello --> </interceptor-ref> <result name="success" type="redirectAction">main</result> <!-- <result name="input" type="redirectAction">/login.jsp</result> --> </action> <action name="showOther" class="com.controller.UserAction"> <result name="success">/showOther.jsp</result> </action> <action name="main" class="com.controller.UserAction"> <result name="success">/main.jsp</result> </action> </package> </struts>
3.MyintercerptCheckLogin.java拦截器代码如下。继承MethodFilterInterceptor抽象类并实现doIntercept方法。在拦截器里判断接收的值为null或者空字符串则拦截下来,不能跳转到另外的页面。否则就调用ActionInvocation.invoke()方法结束拦截,跳到别的页面。
[code]package com.intercept; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.model.user; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public class MyintercerptCheckLogin extends MethodFilterInterceptor{ @Override protected String doIntercept(ActionInvocation arg0) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); user u = (user)session.getAttribute("user"); if(u.getUsername().equals("")||u.getPassword().equals("")){ System.out.println("拦截器执行了!"); return "input"; } else { /*invocation.invoke() 就是通知struts2接着干下面的事情。 * 比如 调用下一个拦截器 或 执行下一个Action, * 就等于退出了你自己编写的这个interceptor了*/ String value = arg0.invoke(); return value; } } }
4.UserAction.java 以下用模型驱动的方法给u传值。该行为类实现了ModelDriven接口, 可以在action中直接获得User对象,它会将Object getModel()方法取得的User放到ValueStack中。可以理解为将这个User的属性追加到Action中。getmodel()方法返回一个用于接收用户输入数据的对象模型,在这个模型对象中的属性可以直接通过(属性名)username来访问,而不需要使用(对象名.属性名)user.username这种格式来访问了,在action也不需要对对象提供getter和setter方法了,但是必须要在action中进行new操作。
[code]package com.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.model.user; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven<user>{//动作类 user u = new user(); public String sayHello(){ HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); System.out.println(u.getUsername()+" "+u.getPassword()); session.setAttribute("user",u); return "success"; } public String execute(){ return "success"; } @Override public user getModel() { // TODO Auto-generated method stub return u; }
main.jsp
[code]<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> 这是主页面!<br> <a href="showOther">点我跳到另一个页面</a> </body> </html>
showOther.jsp
[code]<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> 这是另一个页面! </body> </html>
运行结果如下:
相关文章推荐
- Struts2自定义拦截器:登录拦截
- struts2拦截器--拦截未登录用户
- [转载]Struts2拦截器 实现未登录拦截和权限控制
- Struts2拦截器-实现登录拦截实例
- Struts2-03-拦截器(BOS物流项目用户登录拦截)
- Struts2拦截器的应用:未登录用户拦截(同时拦截ajax请求)
- struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证
- struts2拦截器实现登录拦截
- Struts2自定义拦截器拦截登录 推荐
- struts2拦截器--拦截未登录用户
- struts2用户是否登录拦截器,拦截之后异步跳转到登录页面
- 【ssh】struts2 拦截器详解,登录拦截案例
- Struts2拦截器 实现未登录拦截和权限控制
- Struts2拦截器 实现未登录拦截和权限控制
- Struts2拦截器,简单的用户登录拦截及静态缓存的使用
- struts2 中package的默认拦截器不能拦截某些action的原因
- Struts2中是用拦截器拦截黑名单的demo
- struts2拦截器拦截成功后每次请求都出现拦截时的错误信息
- Struts2_拦截器(Action拦截和全局拦截)
- struts2 拦截器能拦截页面