zoukankan      html  css  js  c++  java
  • Struts10---拦截器

    01.创建一个登录界面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      <body>
        <form action="user/login" method="post">
          <input  type="text"  name="user.name"/>
          <input  type="submit"  value="登录"/>
        </form>
      </body>
    </html>

    02.创建对应的struts.xml文件

    <?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>
    
    <!--设置开发模式  -->
     <constant name="struts.devMode" value="true"/>
     
        <package name="default"  namespace="/user" extends="struts-default">
           <action name="login" class="cn.bdqn.action.UserAction" method="login">
             <!-- 重定向到一个指定命名空间下面的  action-->
              <result type="redirectAction">
                <param name="namespace">/interceptor</param>
                <param name="actionName">login</param>
              </result>
           </action>
        </package>
        <include file="user.xml"/>
    </struts>

    03.创建对应的UserAction

    public class UserAction extends ActionSupport{
    
        private  User user;  //验证的对象
        
        
        //登录的方法
        public  String login(){
            System.out.println("进入UserAction的login()");  
            //把前台登录的用户信息保存到session
            Map<String, Object> session = ActionContext.getContext().getSession();
            if (user.getName()!=null&&!user.getName().equals("")) {
                session.put("user", user.getName());
            }else {
                session.put("user", "");
            }
            return  SUCCESS;
        }
        
        
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
    }

    04.创建对应的user.xml文件

      应该是先创建loginAction,之后创建对应的拦截器! 最后把拦截器配置在xml文件中!

    <?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="interceptor"  namespace="/interceptor" extends="default">
         <!-- 配置自定义的拦截器 -->
           <interceptors>
             <interceptor name="myInterceptor" class="cn.bdqn.interceptor.LoginInterceptor"/>
              <!--自定义拦截器栈  -->
               <interceptor-stack name="myStack">
                  <!-- 必须先引用struts2默认的拦截器栈 -->
                 <interceptor-ref name="defaultStack"/>
                 <interceptor-ref name="myInterceptor"/>
               </interceptor-stack>
           </interceptors>
         <!-- 让程序 执行我们自定义的拦截器栈 -->
          <default-interceptor-ref name="myStack"/>
         
         <action name="login" class="cn.bdqn.action.LoginAction" method="login">
             <result name="error">/error.jsp</result>
             <result>/success.jsp</result>
         </action>
        </package>
    </struts>

    05.创建对应的LoginAction

    public class LoginAction extends ActionSupport {
        
        
        public  String   login(){
            System.out.println("这是LoginAction中的login()");
            return  SUCCESS;
        }
    
    }

    06.创建对应的拦截器

    public class LoginInterceptor implements Interceptor {
    
        /**
         * 在整个拦截器的生命周期中!
         * 服务器启动的时候执行一次!
         */
        @Override
        public void init() {
            System.out.println("拦截器的init()....................");
            
        }
    
    /**
     * intercept相当于我们filter中的doFilter()
     *  拦截一次请求,就会执行一次!
     */
        @Override
        public String intercept(ActionInvocation invocation) throws Exception {
            System.out.println("拦截器的intercept()....................");
            System.out.println("当期的执行Action====:"+invocation.getAction());
            Map<String, Object> session = ActionContext.getContext().getSession();
            //从session中获取用户的姓名
            String  name=(String) session.get("user");
            if (name!=null&&!name.equals("")) {  //说明前台用户有输入
                //放行
              return    invocation.invoke();
            }else {
                return "error";
            }
            
        }
    
        /**
         * 在整个拦截器的生命周期中!
         *  服务器关闭的时候执行一次!
         */
        @Override
        public void destroy() {
            System.out.println("拦截器的destroy().................");
            
        }
    }

    07.错误界面  ! 省略!

  • 相关阅读:
    4星|《激荡十年,水大鱼大》:过去十年间国内商业简史
    4星|《三联生活周刊》2017年47期:所谓“嬉皮精神”,说白了就是让每一个人都能在不影响其他人的前提下,过自己想要的生活
    3星|《三联生活周刊》2017年48期:联大外文系主任叶公超让学生念一句英语就能判断出学生的籍贯
    3星|《终身成长》:成长型思维让人进步,固定型思维让人固步自封。有新意的励志书,但有锤子模式的嫌疑。
    4星|《癌症新知:科学终结恐慌》:非常新鲜的癌症科普
    PL/SQL Developer使用技巧
    Oracle数据导入导出imp/exp sp2-0734:未知的命令开头'imp...解决方法
    oracle数据库导入导出命令!
    如何完全卸载VS2010
    Oracle命令(一):Oracle登录命令
  • 原文地址:https://www.cnblogs.com/999-/p/6514791.html
Copyright © 2011-2022 走看看