千家信息网

使用struts2流程的示例分析

发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章将为大家详细讲解有关使用struts2流程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.客户端初始化一个指向servlet容器(Tomcat)
千家信息网最后更新 2024年11月17日使用struts2流程的示例分析

这篇文章将为大家详细讲解有关使用struts2流程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.客户端初始化一个指向servlet容器(Tomcat)的请求;

2.这个请求经过一系列的过滤器,接着FilterDispatcher被调用;

3.FilterDispatcher询问ActionMapper来决定这个请求是否要调用某个action;

4.如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,ActionPro根据ConfigurationManager询问框架的配置文件,找到需要调用的Action类,一般都是读取struts.xml;

5.ActionProxy创建一个ActionInvocation的实例,ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器的调用;

6.一旦Action执行完毕,ActionInvocation根据struts.xml中的配置找到对应的返回结果

比如代码:

struts2获得了.action请求后,将根据部分决定调用哪个业务逻辑组件;

struts2应用中的Action都被定义在struts.xml中;

struts2用于处理用户请求的Action实例并不是用户实现的业务控制器,而是Action代理,因为用户实现的业务控制器并没有与ServletAPI耦合,显然无法处理用户的请求。

   SUCCESS    
USERNAME:
PASSWORD:

比如上面表单的hello.action,这个action属性不是一个普通的servlet,也不是一个动态JSP页面,当表单提交给hello.action时,Struts2的FilterDispatcher将会起作用,将用户请求转发到对应的Action.

注意的是:Struts2 Action默认拦截所有后缀为.action的请求,如果我们需要将表单提交给Action处理,则应将表单action属性设置为.action的格式。

控制器类

public class HelloAction {        private String name;        private String pass;        public void setName(String name){                this.name=name;        }        public void setPass(String pass){                this.pass=pass;        }        public String execute(){                if("yang".equals(name) && "1234".equals(pass)){                        return "success";                } else{                        return "error";                }        }}

前面执行完成后仅仅是执行了页面的转发,没有跟踪用户的状态,当用户登录完成后,我们需要将用户的用户名添加为HTTPSession的状态信息。

为了访问Httpsession实例,struts2提供了一个ActionContext类,该类提供了一个getSession()得方法,但是这个方法的返回值不是HttpSession()而是Map(),但是Struts2的拦截器会负责该Session()和HttpSession()之间的切换。

为了检查我们设置的session属性是否成功,可以给成功后的界面这么设置

     SUCCESS    欢迎,${sessionScope.user},您已经登录。 

利用JSP2.0表达式语法输出HTTP Session中的user属性。

Action 工具类集成ActionSupport

ActionSupport类是一个工具类,而且已经实现了Action接口,除此之外,还实现了Validateablez接口,提供了数据校验功能。

为了增加输入数据的校验功能,在Action中增加重写validate方法。

public void validate() {        if(getName()==null || getName().trim().equals("")){                addFieldError("name",getText("name.required"));        }        if(getPass()==null || getPass().trim().equals("")){                addFieldError("pass", getText("pass.required"));        }}

上面添加的重写的validate方法会在系统的execute()方法之前执行,如果执行该方法后Action类的fieldError中已经包含了数据校验错误,请求将被转发到input逻辑视图处,所以还要在struts.xml中添加input逻辑视图名,让其跳转到登录页面。

这个validate方法的缺点就是需要大量重写validate方法,所以可以用struts2的校验框架进行校验。

                                      

关于"使用struts2流程的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

用户 方法 实例 属性 表单 处理 业务 控制器 数据 篇文章 逻辑 页面 控制 登录 流程 示例 分析 成功 功能 工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 net 6数据库开发 华硕电脑无法访问数据库文件 分布式数据库可重构性的证明 网络安全产业 领导讲话 数据库基础及应用考题 网络安全研修心得doc 福州闽投优创网络技术有限公司 服务器数据流程 软件开发里发包平台 海外云服务器搭建梯子 在js中获取数据库数据 网络技术学什么好 dns服务器启动多长时间 饥荒联机版链接服务器 网络安全系列故事 软件开发任职资格体系 社保费管理客户端代理服务器 协同客户端访问服务器失败 美国首部网络安全法案 网络技术升级合同交印花税 三级数据库技术考试介绍 我的世界纯生存服务器pc 方舟生存进化进服务器下不去 手机总是连接不上服务器怎么解决 宜城市雄泰网络技术有限公司 数据库两个表连接有几个外键 网络安全漏洞规定什么时间实施 数知科技 第五届世界互联网 软件开发设计大学分数线二本 省司法厅网络安全
0