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

Struts10---拦截器的更多相关文章

  1. 6. ModelDriven拦截器、Preparable 拦截器

    1. 问题 Struts2 的 Action 我们将它定义为一个控制器,但是由于在 Action 中也可以来编写一些业务逻辑,也有人会在 Action 输入业务逻辑层. 但是在企业开发中,我们一般会将 ...

  2. springmvc的拦截器

    什么是拦截器                                                         java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...

  3. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

  4. Struts2拦截器的执行过程浅析

    在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...

  5. 学习SpringMVC——拦截器

    拦截器,顾名思义就是用来拦截的. 那什么是拦截,又为什么要拦截.对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段悉心呵护[为所欲为].常见的比如 ...

  6. alias拦截器的使用

    在SSH项目中,有时需要由一个Action跳转到另一个Action.有两种方式可以实现Action之间的跳转,一种是chain,另一种是redirectAction,这两种方式之间的区别是chain是 ...

  7. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

  8. 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录

    java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务 ...

  9. spring 拦截器

    1.mvc.xml <!-- 自定义拦截链配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping p ...

  10. Struts2 拦截器配置以及实现

    @(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...

随机推荐

  1. RTSP客户端接收存储数据(live555库中的openRTSP实例)

    一.openRTSP编译运行 a)windows下编译运行 还是以mediaServer作为服务端,openRTSP作为客户端 b)Linux下编译运行 转自http://kuafu80.blog.1 ...

  2. Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"

    Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索" //匹配右边 var   reg: TPerlRegEx; begin   ...

  3. delphi 改变闪动光标

    delphi 改变闪动光标 // 不同风格的光标 procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;Shift ...

  4. pycharm断点调试

    step over 执行下一步 蓝色高亮的那一行表示准备执行的代码

  5. angularJS 中的传参

    今天总结一下 angularJS 传参的 3种方式:(配合 ui-router) 现在有两个页面,page1.html 和 page2.html, 现由 page1.html 向 page2.html ...

  6. 自定义mousewheel事件,实现图片放大缩小功能实现

    本文是承接 上一篇的<自定义鼠标滚动事件>  的基础上实现的,建议大家先看一下上一篇的mousewheel的实现,再浏览下文: 上篇中我们介绍到: $element.mousewheel( ...

  7. JavaScript创建类的三种方式

    //第一种 创建类方法. // 用方法模拟 构造函数. function classobj() { this.name = 'xiaoming'; } classobj.text = 'text'; ...

  8. 【Java】Swing+IO流实现一个简单的文件加密程序(demo版)

    留着参考 EncrytService package com.my.service; import java.io.File; import java.io.FileInputStream; impo ...

  9. 【JavaScript】满天星

    参考: 1.http://www.w3school.com.cn/tags/canvas_filltext.asp 2.产生随机数:http://www.cnblogs.com/banbu/archi ...

  10. Nginx URL跳转

    配置需求 注:$document_uri  表示访问的url 需求:访问 www.abc.com  请求到 www.abc.com/abc/ 使用操作 1.在nginx配置文件中加入 if ($doc ...