• 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.错误界面  ! 省略!

  • 相关阅读:
    MYSQL--事务处理
    phpStudy + JspStudy 2014.10.02 下载
    ThinkPHP实现跨模块调用操作方法概述
    ThinkPHP整合百度Ueditor图文教程
    PHP获取今天、昨天、明天的日期
    获取客户端IP地址定位城市信息
    samba服务器概述
    Linux下好玩的命令
    一张网页的旅行
    PHP获取中英文混合字符串长度及截取
  • 原文地址:https://www.cnblogs.com/xtdxs/p/7097525.html
Copyright © 2020-2023  润新知