1、做一个登陆页面(loginView.jsp,才用Action来访问),
2、登陆成功后,可以跳转到系统的首页(index.jsp),
3、首页有一个链接(testOtherAction访问其它的功能模块)
4、testOtherAction要检验用户是否登陆,如果没有登陆就跳回到重新登陆的Action中去
(userAction_loginView)

模拟自己是组长
1、 建立一个空项目
2、 托管到远程的代码服务器(例如码云)
3、 在项目管理器中,添加一个module,选择Maven,勾上create from archetype,选中
Maven…webapp
4、 在项目管理器中,在main下面添加java目录用于放java代码,
于main平行(选中src)添加一个test目录
5、 添加依赖,在POM.xml,
在dependencies节点添加多一个struts2核心包(struts2-core)的dependency

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.13</version>
</dependency>

6、配置web.xml配置struts(复制粘贴)

注意检查External Libraries是否已经有了struts2的jar下载

7、在resources目录,右键选择New-->>XML Configuration File-->>Struts Config

取名(struts.xml)

下面的内容没有绝对的顺序,因为MVC框架本来就是模块化的思想

8、先UI的jsp文件建立起来

在webapp\WEB-INF\建立一个jsp目录,放以下文件:

error.jsp

index.jsp (在这里使用el表达式,显示${office.name})

otherFunction.jsp

loginView.jsp

9、根据需求,抽象出一个一个的实体,建立实体类(User,Office)

在java目录下,建立一个包com.nf.entity,然后建立2个POJO的java

10、先建立首页的Action(IndexAction),以及其他功能的Action(OtherFunctionAction)

在java目录下,建立com.nf.action包,

a.建立IndexAction类

b.extends ActionSupport

c.添加1个execute方法,模拟从数据库取出来的值,

赋值给Office实例,用于前端jsp显示

d.在Struts.xml中添加一个Action(indexAction)

e.建立OtherFunctionAction类

f.extends ActionSupport

g.添加1个execute方法

h.在Struts.xml中添加一个Action(otherFunctionAction)

10、在com.nf.action添加一个UserAction类

a.extends ActionSupport

b.implements ModelDriven<User>,SessionAware

c.添加一个属性private Map<String,Object> session = null;

(PS.让框架自动注入,节省了手动写代码:ActionCotext…)

在setSession方法中添加:this.session = map;

d.添加一个属性private User user = null;

e.在getModel()

编写以下代码

this.user = new User();

return this.user;

实现驱动模式,让框架自动帮我们赋值,节省了手写代码request.getParameters..

f.添加2个业务方法(loginView ,login)

g.添加loginView方法,没有任何代码,用于引用loginView.jsp

return "loginViewSuccess";

h.在struts中添加userAction,使用_* 等通配符来标识好这个userAction,

i.新版Struts中,在Action节点要添加<allowed-methods>login,loginView</allowed-methods>

j.添加login方法

做出用户名和密码校验的业务逻辑(一般需要访问数据库)

失败:return this.ERROR;

成功:(1)添加session  session.put("user",user);

(2)return this.SUCCESS;

k.为login添加2个result(error,success)

其中error:引用/WEB-INF/jsp/error.jsp

Success:<result name="success" type="redirectAction">indexAction</result>

让客户端重新发出一个新的请求,直接访问index,地址栏会改变

11、建立判断Session是否为null的拦截器LoginInterceptor

a.在aciton包里,建立一个普通java,命名为LoginInterceptor.java

b.实现Interceptor接口,在intercept方法中编写拦截规则

(1)当session不为null,放行

return actionInvocation.invoke();

(2)当session为null,引导跳到重新登录的result中(取名为login)

定义一个全局的result 与之匹配。

<global-results>

<result name="login" type="redirectAction">userAction_loginView</result>

</global-results>

12、在struts.xml中定义刚刚编写的拦截器。

a.新增interceptors节点

b.在interceptors中新增一个

<interceptor name="" class=""></interceptor>

13、在需要sesssion登录判断的Action中,添加拦截器的引用。

a. 在Action节点里面编写引用拦截器的代码

<interceptor-ref name="loginInterceptor"></interceptor-ref>

b. 因为自定义拦截器,会导致系统默认的拦截器失效,所以手动添加系统默认拦截器

<interceptor-ref name="defaultStack"></interceptor-ref>

ps:登陆页面:http://localhost:8080/userAction_loginView

地址:https://gitee.com/xiaomosheng888/oa01.git

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-core</artifactId>

<version>2.5.13</version>

</dependency>

Struts2学习-拦截器2的更多相关文章

  1. Struts2学习---拦截器+struts的工作流程+struts声明式异常处理

    这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...

  2. Struts2学习-拦截器

    1.新建项目user4,建立好和user3一样的目录,与之相比只是添加几个类,主要是struts.xml和action类的改变,其结果没有太大的变化 struts,xml <?xml versi ...

  3. Struts2学习-拦截器2续

    定义拦截器有2种办法:1.实现Interceptor接口2.集成AbstractInterceptor抽象类 一.方法1 ..... <struts> <package name=& ...

  4. Struts2【拦截器】就是这么简单

    什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Str ...

  5. JavaWeb框架_Struts2_(三)---->Struts2的拦截器

    2. Struts2的拦截器(使用拦截器实现权限控制) 2.1 拦截器的概述 拦截器是Struts2的核心组成部分,它可以动态的拦截Action调用的对象,类似与Servlet中的过滤器.Struts ...

  6. (六)Struts2的拦截器

    一.简介 拦截器体系是struts2重要的组成部分.正是大量的内建拦截器完成了该框架的大部分操作. 比如params拦截器将请求参数解析出来,设置Action的属性.servletConfig拦截器负 ...

  7. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  8. struts2总结六: Struts2的拦截器

    一.Struts2的系统结构图

  9. Struts2使用拦截器完成权限控制示例

    http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求:    要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...

随机推荐

  1. HDU_1846 Brave Game 【巴什博弈】

    题目: 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天, ...

  2. Sasha and a Bit of Relax(前缀异或和+二维数组+思维)

    Sasha likes programming. Once, during a very long contest, Sasha decided that he was a bit tired and ...

  3. 【DP】【构造】NOIp模拟题 演讲 题解

        极其考思维的好题 题目背景 众所周知,$\mathrm{Zdrcl}$是一名天天$\mathrm{AK}$的高水平选手. 作为一民长者,为了向大家讲述自己$\mathrm{AK}$的经验,他决 ...

  4. 关于 Gojs 你可能用到的方法 / gojs自定义 / gojs

    以下归纳如果对你有帮助的话请点下文章下面的推荐,谢谢! 1.阻止键盘事件 myDiagram.commandHandler.doKeyDown = function () { var e = myDi ...

  5. [转] Kubernetes集群安装文档-v1.6版本

    [From] https://www.kubernetes.org.cn/1870.html http://jimmysong.io/kubernetes-handbook

  6. Java非递归实现迷宫问题

    这个题目是本人的一次课程设计,也是我第一次独立做完的一个小玩意,说实话,昨晚的那一刻很有成就感.整个人开心到在自习室蹦起来.因为之前一直是自学的Java,从没有自己做过任何一个项目,这一个课程设计就花 ...

  7. 行业UI设计师总结UI设计8个趋势

    纵观整个设计的历史可以发现,设计的历史演变都无一例外都是从复杂的装饰性设计逐步的演化为更加注重功能性的简洁化设计.并且设计师们还在不停的试图通过各种设计语言的创新追求极至设计的可能性.设计潮流变更的核 ...

  8. (转)第二十三节 inotify事件监控工具

    第二十三节 inotify事件监控工具 标签(空格分隔): Linux实战教学笔记-陈思齐 原文:http://www.cnblogs.com/chensiqiqi/p/6542268.html 第1 ...

  9. 把linux图形启动界面修改成命令行界面

    由于图形界面比较耗资源,需要把启动界面修改成命令行界面,怎么修改呢? 1.vim /etc/inittab 2.把id:5:initdefault:改成 id:3:initdefault: 3.重启即 ...

  10. IntelliJ IDEA 使用 LiveEdit 插件实现实时可视化前端开发

    之前因为公司很多都是C#后台项目,所以一直用的Visual Studio开发.而在VS里会自带实时刷新功能,即:在IDE中修改的CSS代码会同步反映在页面上,而不用我们手动F5刷新. 先在因为在考虑做 ...