首页 > 代码库 > Struct2笔记
Struct2笔记
摘自《javaWeb整合开发王者归来》
一、Struct2工作流程
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解析
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。
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笔记