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接口

  • 相关阅读:
    SharePoint 2013 商务智能报表发布
    sharepoint designer web 服务器似乎没有安装microsoft sharepoint foundation
    SharePoint 2013 Designer系列之数据视图
    SharePoint 2013 Designer系列之数据视图筛选
    SharePoint 2013 Designer系列之自定义列表表单
    SharePoint 2013 入门教程之创建及修改母版页
    SharePoint 2013 入门教程之创建页面布局及页面
    SharePoint 2010 级联下拉列表 (Cascading DropDownList)
    使用SharePoint Designer定制开发专家库系统实例!
    PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机
  • 原文地址:https://www.cnblogs.com/expiator/p/6931144.html
Copyright © 2011-2022 走看看