Struts2自定义拦截器实例—登陆权限验证

版本:struts2.1.6

此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面。

代码如下:

一、页面

login.jsp

 

  1. <%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>yuewei'Login</title>
  6. <!--
  7. <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
  8. -->
  9. </head>
  10. <body>
  11. <formaction="login.action"method="post">
  12. User:<inputtype="text"name="username"><br>
  13. Passoword:<inputtype="password"name="password"><br>
  14. <inputtype="submit"value="submit">
  15. </form>
  16. </body>
  17. </html>

 

welcome.jsp

 

  1. <%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title> yuewei's Welcome</title>
  6. <!--
  7. <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
  8. -->
  9. </head>
  10. <body>
  11. <h1>登录成功后显示此页面</h1>
  12. <ahref="show.action"mce_href="show.action">show</a>
  13. </body>
  14. </html>

 

show.jsp

 

  1. <%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>yuewei's Show</title>
  6. <!--
  7. <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
  8. -->
  9. </head>
  10. <body>
  11. Show This Page
  12. 登录后执行此页面<br>
  13. </body>
  14. </html>

 

 

二、Action

LoginFormAction

 

  1. package com.ywjava.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. publicclass LoginFormAction extends ActionSupport {
  4. public String exexcute() {
  5. return"success";
  6. }
  7. }

 

LoginAction

 

  1. package com.ywjava.action;
  2. import com.opensymphony.xwork2.ActionContext;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. import com.ywjava.utils.Constants;
  5. publicclass LoginAction extends ActionSupport{
  6. private String username;
  7. private String password;
  8. public String getPassword() {
  9. return password;
  10. }
  11. publicvoid setPassword(String password) {
  12. this.password = password;
  13. }
  14. public String getUsername() {
  15. return username;
  16. }
  17. publicvoid setUsername(String username) {
  18. this.username = username;
  19. }
  20. privateboolean isInvalid(String value) {
  21. return (value == null || value.length() == 0);
  22. }
  23. public String execute(){
  24. System.out.println(username);
  25. System.out.println(password);
  26. if (isInvalid(getUsername()))
  27. return INPUT;
  28. if (isInvalid(getPassword()))
  29. return INPUT;
  30. if(this.getUsername().equals("yuewei")&& this.getPassword().equals("yuewei")){
  31. ActionContext.getContext().getSession().put(Constants.USER_SESSION,getUsername());
  32. ActionContext.getContext().getSession().put(Constants.PASS,getPassword());
  33. return"success";
  34. }
  35. return"error";
  36. }
  37. }

 

ShowAction

 

  1. package com.ywjava.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. publicclass ShowAction extends ActionSupport {
  4. public String execute() {
  5. return"success";
  6. }
  7. }

 

三、拦截器

 

  1. package com.ywjava.interceptot;
  2. import java.util.Map;
  3. import com.opensymphony.xwork2.Action;
  4. import com.opensymphony.xwork2.ActionContext;
  5. import com.opensymphony.xwork2.ActionInvocation;
  6. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
  7. import com.ywjava.utils.Constants;
  8. publicclass LoginInterceptor extends AbstractInterceptor {
  9. @Override
  10. public String intercept(ActionInvocation invocation) throws Exception {
  11. // 取得请求相关的ActionContext实例
  12. ActionContext ctx = invocation.getInvocationContext();
  13. Map session = ctx.getSession();
  14. String user = (String) session.get(Constants.USER_SESSION);
  15. // 如果没有登陆,或者登陆所有的用户名不是yuewei,都返回重新登陆
  16. if (user != null && user.equals("yuewei")) {
  17. System.out.println("test");
  18. return invocation.invoke();
  19. }
  20. ctx.put("tip", "你还没有登录");
  21. return Action.LOGIN;
  22. }
  23. }

 

四 struts.xml

 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
  4. "http://struts.apache.org/dtds/struts-2.1.dtd">
  5. <struts>
  6. <package name="authority" extends="struts-default">
  7. <!-- 定义一个拦截器 -->
  8. <interceptors>
  9. <interceptor name="authority"
  10. class="com.ywjava.interceptot.LoginInterceptor">
  11. </interceptor>
  12. <!-- 拦截器栈 -->
  13. <interceptor-stack name="mydefault">
  14. <interceptor-ref name="defaultStack" />
  15. <interceptor-ref name="authority" />
  16. </interceptor-stack>
  17. </interceptors>
  18. <!-- 定义全局Result -->
  19. <global-results>
  20. <!-- 当返回login视图名时,转入/login.jsp页面 -->
  21. <result name="login">/login.jsp</result>
  22. </global-results>
  23. <action name="loginform"
  24. class="com.ywjava.action.LoginFormAction">
  25. <result name="success">/login.jsp</result>
  26. </action>
  27. <action name="login"class="com.ywjava.action.LoginAction">
  28. <result name="success">/welcome.jsp</result>
  29. <result name="error">/login.jsp</result>
  30. <result name="input">/login.jsp</result>
  31. </action>
  32. <action name="show"class="com.ywjava.action.ShowAction">
  33. <result name="success">/show.jsp</result>
  34. <!-- 使用此拦截器 -->
  35. <interceptor-ref name="mydefault" />
  36. </action>
  37. </package>
  38. </struts>

 

你可能感兴趣的:(struts2)