zoukankan      html  css  js  c++  java
  • 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接口

  • 相关阅读:
    VS2015快捷键
    layui radio 监听
    jsvascript === 和==的区别
    bootstrap table checkbox 根据值选中、禁用等
    table 中 display为 block 时 tbody 失去宽度
    打包成Zip
    Server.MapPath()用法
    JS比较当前时间是否在指定时间段内
    从多张表获取数据,重组DataTable,根据重组路径,打包下载文件。
    checkbox 根据值选中
  • 原文地址:https://www.cnblogs.com/expiator/p/6931144.html
Copyright © 2011-2022 走看看