Structs2

过滤器查找请求,确定适当的action类
拦截器:负责将HttpServletRequest请求中的请求参数解析出来,传入用户定义的Action类中
jsp和action中的属性要严格一致,如果用到bean,三方一致

Interceptor将request中的所有提交的数据set(用interceptor拦截器,多次)进action,提前set
例如下图的 定义了User xs 在struts中首先将前面的函数运行(set)
当通过struts.xml转向 SavaAction 时,直接调用execute方法
**

  1. public class SaveAction extends ActionSupport{
  2. private User xs;
  3. public User getXs() {
  4. return xs;
  5. }
  6. public void setXs(User xs) {
  7. this.xs = xs;
  8. }
  9. public String execute() throws Exception {
  10. User stu=new User();
  11. stu.setUsername (xs.getUsername ());
  12. stu.setPassword(xs.getPassword ());
  13. if(!"zhangsan".equals(stu.getUsername())){
  14. return SUCCESS;
  15. }else
  16. return ERROR;
  17. }
  18. }

action类不是servlet类

web.xml中的welcome-file-list里是欢迎页面,第一次打开的页面
/所有的请求
/
.action所有.action的请求

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 为过滤器jar中的主函数 用CopyQualitiedName直接复制出来

过滤器去找struts.xml
创建的Action类通常继承 ActionSupport类 ActionSupport中有很多工具

jsp中的action=”内容(.action可加可不加)” action中的内容与struts中的相对性

校验器
jsp的标签必须换为struts标签
<%@ taglib uri=”/struts-tags” prefix=”s” %>
<s:form action=”struts.action” method=”post”>
<s:textfield name=”name” label=”请输入姓名”>
<s:submit value=”提交”>

位置:与Action类同一路径下
增加”input”的result
命名:

  • -validation.xml
  • --validation.xml



拦截器
如果不加默认拦截器,就不能自动set


国际化
增加配置文件struts.properties
建立不同语言的资源文件
使用资源文件中定义的国际化消息
struts.custom.i18n.resources = messgageResource

资源文件名为
String语言国家.porperties
String与struts.properties中的string对应

  • Struts 2访问国际化消息主要有以下三种方式:
    • ① 在JSP页面中输出国际化消息,可以使用Struts 2的标签,该标签可以指定name属性,该属性指定国际化资源文件中的key。
    • ② 在Action中访问国际化消息,可以使用ActionSupport类的getText()方法,该方法可以接收一个参数,该参数指定了国际化资源文件中的key。
    • ③ 在表单元素的label属性里输出国际化信息,可以为该表单标签指定一个key属性,该属性指定了国际化资源文件中的key。