Struts2学习-拦截器2
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的更多相关文章
- Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...
- Struts2学习-拦截器
1.新建项目user4,建立好和user3一样的目录,与之相比只是添加几个类,主要是struts.xml和action类的改变,其结果没有太大的变化 struts,xml <?xml versi ...
- Struts2学习-拦截器2续
定义拦截器有2种办法:1.实现Interceptor接口2.集成AbstractInterceptor抽象类 一.方法1 ..... <struts> <package name=& ...
- Struts2【拦截器】就是这么简单
什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Str ...
- JavaWeb框架_Struts2_(三)---->Struts2的拦截器
2. Struts2的拦截器(使用拦截器实现权限控制) 2.1 拦截器的概述 拦截器是Struts2的核心组成部分,它可以动态的拦截Action调用的对象,类似与Servlet中的过滤器.Struts ...
- (六)Struts2的拦截器
一.简介 拦截器体系是struts2重要的组成部分.正是大量的内建拦截器完成了该框架的大部分操作. 比如params拦截器将请求参数解析出来,设置Action的属性.servletConfig拦截器负 ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- struts2总结六: Struts2的拦截器
一.Struts2的系统结构图
- Struts2使用拦截器完成权限控制示例
http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求: 要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...
随机推荐
- UESTC - 1147 求最短路方案数
这道题很是说明了记忆化搜索的重要性 瞎bfs递推半天发现没卵用(也许是姿势不对,但我认为树形或图形dfs明显好写并且很好正确地递推) 参考了别人的写法,总感觉自己的实现能力太弱了 还有题目是1e9+9 ...
- HDU - 5067 / HDU - 5418 TSP
集合表示多用[0,n)表示方法 HDU - 5067 经典TSP,每个顶点恰经过一次最优 #include<bits/stdc++.h> #define rep(i,j,k) for(in ...
- 为什么Kafka那么快,明显领先其他mq?
经常看到有很多Kafka的测试文章,测试结果通常都是“吊打”其他MQ.感慨它的牛B之余我觉得必要仔细分析一下它如此快速的原因.这篇文章不同于其他介绍Kafka使用或者技术实现的文章,此处我会重点解释— ...
- PIE SDK云图动画导出
云图动画,就是将一组序列图以动画的形式进行轮播,PIE SDK可以将云图动画以gif或avi格式进行导出,本文示例以云图动画导出gif为例,这样只需要点开gif文件就可以浏览云图动画. 下面来介绍下实 ...
- MySQL数据库插入中文时出现Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1
今天在开发时候出现了这个问题 Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1 场景,往 ...
- 【3dsMax安装失败,如何卸载、安装3dMax 2014?】
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- myeclipse更改后台代码不用重启tomcat的方法
myeclipse更改后台代码不用重启tomcat的方法 方法1:在WebRoot下的META-INF文件夹中新建一个名为context.xml文件,里面添加如下内容(要区分大小写): <C ...
- (转)模块readline解析
模块readline解析 原文:https://www.cnblogs.com/fireflow/p/4841413.html readline模块定义了一系列函数用来读写Python解释器中历史命令 ...
- B站视频下载(VideoHelper)
继续上次的知乎爬虫, 这次开始了哔哩哔哩的爬虫实践: 首先介绍下如何下载吧: VideoHelper 里面有三种方式下载b站视频. 同样的流程, 还是先抓包,分析参数,寻找参数(包括之前的请求包和页面 ...
- [Modelsim] 仿真的基本操作
切换路径,建立库并编译所有源文件之后, 键入命令: vopt +acc topmodulename -o top vsim top 其中topmodulename是顶层模块的名称.