Struct2总结
摘自《javaWeb整合开发王者归来》
一、Struct2工作流程
假设项目名(上下文)为struts2。
1.访问jsp页面 /struts2/login.jsp
2.提交表单后数据提交给 /struts2/loginPerson.action
3.Struts2截取所有请求,包括*.action的请求
4.查找struts.xml,得知 loginPerson.action对应LoginAction
5.生成一个LoginAction实例,将提交的数据设置到该实例中
6.调用LoginAction实例的execute()主方法
7.跳转到jsp中显示结果,丢弃该LoginAction实例
二、Struts.xml解析
Structs有一个配置文件Struts.xml
package:所有的result、action都必须配置到package中。
package具有继承的特性。子package的Action能使用你package的资源。
自定义的package一般继承自structs-default
<package name="test" extends="struts-default">
<action name="login" class="test.LoginAction">
<result name="success">/index.jsp</result>
<result name="login">/login.jsp</result>
</action>
</package>
注意:可以在struts.xml里面配置常数,也可以在Struts.properties里面配置,
Struts.properties里面的配置会覆盖Struts.xml的配置。
<!--关闭动态方法调用-->
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<!--是否为开发模式-->
<constant name="struts.devMode" value="false" />
<!-- 与spring集成 -->
<constant name="struts.objectFactory" value="spring" />
<!-- 改变后缀名 -->
<constant name="struts.action.extension" value="action" />
<!-- 配置国际化资源文件 -->
<constant name="struts.custom.i18n.resources"
value="globalMessages" />
<!-- 处理编码问题 -->
<constant name="struts.i18n.encoding" value="GBK" />
<!-- 当修改配置文件不需要重启服务 -->
<constant name="struts.configuration.xml.reload" value="true" />
三、web.xml配置Struts的Filter
以下配置表示截取所有的URI,如果URI以.action结尾,Struts2会查找对应的Action或者Jsp
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
四、Action
自定义Action一般直接继承ActionSupport类,覆盖excute()方法。也可以不继承Action。
提交数据后Struts2会调用excute()方法,返回值代表页面的名称,具体文件路径在struts.xml配置文件中。
Struts2会通过getter,setter方法将jsp表单的输入内容设置进来。
Struts2框架还会将request,response数据通过setter注射进来,不必再调用servlet的api。
public class LoginAction extends ActionSupport {
private String account;
private String password; public String execute(){
if("123".equalsIgnoreCase(account) && "123".equals(password)) {
return SUCCESS;
}
return LOGIN;
} public String getAccount() {
return account;
} public void setAccount(String account) {
this.account = account;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}
五、Struts2标签
Struts2标签示例如下:
<body>
<h1>欢迎来到登陆页面^_^</h1>
<structs:form action="login">
<structs:label value="登陆系统"></structs:label>
<structs:textfield name="account" label="账号"></structs:textfield>
<structs:textfield name="password" label="密码"></structs:textfield>
<structs:submit value="登陆"></structs:submit>
</structs:form>
</body>
</html>
六、Struts2获取request、respon
Struts2会自动完成HttpServlet中取参数的工作,抛弃了HttpServletRequest、HttpServletResponse等。
获取的方法有:
1.调用ServletActionContext.getRequest()
2.实现ServletRequestAware接口
Struct2总结的更多相关文章
- zyUpload+struct2完成文件上传
前言: 最近在写自己的博客网站,算是强化一下自己对s2sh框架的理解.期间遇到了很多问题,这些问题在写之前都考虑过,感觉也就是那样吧.但正真遇到了,也挺让人难受的.就利用zyUpload这个js插件实 ...
- xmlstreaml xml过滤 格式化 报文的发送接收 struct2
有时候把东西想的过于复杂了,还是思路不清晰啊. seervlet struct2配置过程
- outscan 一键批量 get struct2 devMode (CNVD-2016-04656)
之前写的一个玩意 下载地址:http://pan.baidu.com/s/1i5jmEwP 密码:v8v3 一键批量 get struct2 devMode 支持百度.google(google有访问 ...
- struct2的structs.xml文件配置There is no Action mapped for action name 问题
很久没写过博客,今天重新开始写,新技术太多,只有通过博客才可以不断积累,本人水平有限,如有错误,欢迎指正,谢谢 今天在MAVEN上配置web project的struct2,发现自己忽略了很多问题,再 ...
- 创建Struct2的web应用(一)
1.上http://struts.apache.org/ 下载Struct2 2.解压缩,将lib文件夹内的部分JAR复制到java web应用的WEB-INF/lib目录下.所需JAR: commo ...
- java MVC架构-spring mvc,struct2(理解)
MVC架构实现基础: 基于filter或者servlet实现请求地址分析,如果需要控制类处理请求,则调用相应的控制类.调用控制类时,根据配置文件初始化控制类相关的参数.数据库连接可持久化存在.控制类处 ...
- struct2 学习总结
花了近半个月学习了struct2.现大致总结下学习点: 1. struct2 入门以及基本配置(未继承ActionSupport,配置struts.xml文件,execute方法直接返回SUCESS) ...
- Struct2提交表单数据到Acion
Struct2提交表单数据到Action,Action取表单的数据,传递变量.对象 HTML.jsp <form action="reg.do" method="p ...
- Struct2 自定义拦截器
1 因为struct2 如文件上传,数据验证等功能都是由系统默认的 defalutStack中的拦截器实现的,所以我们定义拦截器需要引用系统默认的defalutStack 这样才不会影响struct2 ...
- struct2访问或添加request/session/application
访问或添加request/session/application 1 通过ActionContext //这样放置 public String execute() { ActionConte ...
随机推荐
- [转]NSIS:使用SectionSetFlags根据不同环境自动勾选特定区段
转自: http://www.flighty.cn/html/bushu/20140526_232.html 在微软SQL2000+SP4集成安装版安装包中可以根据目标操作系统自动勾选对应的版本, ...
- java.lang.Object类
Object类是java所有对象的基类,包含着java最核心和最基础的类,在编译时会自动导入.具体的类结构图: 1.构造器 public Object(); 大部分情况下,Java中通过形如 new ...
- [UE4]组件
用来组成Actor的子对象,Actor是由组件组成的. 几个关键的Component类型: 一.UActorComponent 这个Component的基类,可以被放到Actor里面, 可以接受Tic ...
- [UE4]C++ getter and setter
问:以前面向对象没学好.... 最近老是在想,既然要设为private为什么还要写个setter来改变它的值呢? 为什么不直接把它直接设成public倒省事? 呵呵,谢啦 答:用setter来改变数据 ...
- C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)
最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习.验证.验证是分别在4台电脑,XP SP3系统中进行,特将 ...
- 面向服务的SOA架构与服务总线ESB
之前的软件的开发主要是面向对象的编程架构 方法---对象---模块---组件---服务,感觉现在的开发的主流的软件架构的设计思想都是对其进行重用,只不过范围越来越大,有一个系统之间进行通信到多个系统之 ...
- 网络虚拟化中的 offload 技术:LSO/LRO、GSO/GRO、TSO/UFO、RSS、VXLAN
offload offload特性,主要是指将本来在操作系统协议栈中进行的一些数据包处理(如IP分片.TCP分片.重组.checksum校验等)放到网卡硬件中去做,降低系统 CPU 消耗,提高处理的性 ...
- thinkphp5隐藏apache下的index.php
在应用入口文件同级目录添加.htaccess文件,内容如下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Re ...
- JAVA 读取配置文件 xxx.properties
package config_demo; import java.io.InputStream; import java.util.Properties; public class UrlDemo { ...
- docker 简单入门(一)
本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 大家好,首先跟大家说声对不起,我班门弄斧了,我本身是做系统开发,使用的语言是C#和JAV ...