zoukankan      html  css  js  c++  java
  • struts2框架基本操作总结

    struts技术说明

    一:第一配置开发环境

    1.struts.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

    <struts>

    </struts>

    2.web.xml文件

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

    3.导入包

    (xwork,struts2-core,commons-fileupdate,commons-io,commons-logging,ognl,freework)

    第二基本使用

    <package name="defalut" namespace="/demo" extends="struts-default">

    <action name="demo1">

    <result>/index.jsp</result>

    </action>

    <action name="Student_*" class="my.struts2.test.Child" method="{1}">

    <result name="message">/index.jsp</result>

    </action>

    </package>

    重定向到action(指定其他包名)

    <package name="defalut" namespace="/demo" extends="struts-default">

    <action name="demo1">

    <result>/index.jsp</result>

    </action>

    <action name="Student_*" class="my.struts2.test.Child" method="{1}">

    <result name="message" type="redirectAction">

    <param name="actionName">demo1</param>

    <param name="namespace">/demo</param>

    </result>

    </action>

    </package>

    (同一个包中)

    <result name="message" type="redirectAction">demo1</result>

    第四格式化输出HTML

    <package name="defalut" namespace="/demo" extends="struts-default">

    <action name="demo1">

    <result>/index.jsp</result>

    </action>

    <action name="Student_*" class="my.struts2.test.Child" method="{1}">

    <result name="message" type="plainText">

    <param name="location">/index.jsp</param>

    <param name="charSet">UTF-8</param>

    </result>

    </action>

    </package>

    第五action 指定参数

    <package name="defalut" namespace="/demo" extends="struts-default">

    <action name="demo1">

    <result>/index.jsp</result>

    </action>

    <action name="Student_*" class="my.struts2.test.Child" method="{1}">

    <param name="nameString">啊silt就会ihg</param>

    <result name="message">/index.jsp</result>

    </action>

    </package>

    struts2常用的常量

    struts2可以通过修改常量值来改变action的访问后缀。

      <constant name="struts.action.extension" value="do,action"/> 

    struts.properties中的配置如下:

    struts.action.extension=do

    此外因为常量可以在下面多个配置文件中进行定义,所以我们需要了解struts2加载常量的搜索顺序:

    struts-default.xml

    struts-plugin.xml

    struts.xml

    struts.properties

    web.xml

    如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值。

    常用常量介绍:

    ·<constant name="struts.i18n.encoding" value="UTF-8" />

    指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和freemarker、velocity的输出

    ·<constant name="struts.action.extension" value="do" /> 改变action的后缀

    ·<constant name="struts.configuration.xml.reload" value="true" />

    当struts的配置文件修改后,系统是否自动重新加载该文件,默认为false,开发阶段最好打开,这样不用重启服务器。

    ·<constant name="struts.devMode" value="true" />

    开发模式下使用,这样可以答应出更详细的错误信息

    ·<constant name="struts.multipart.maxSize" value="10701096" /> 

    上传文件的大小限制,value值表示总大小,不是单个文件。

    ·<constant name="struts.ui.theme" value="simple" /> 

    默认的视图主题

    ·<constant name="struts.serve.static.browserCache" value="false" /> 

    设置浏览器是否缓存静态内容,默认为true,开发阶段最好关闭

    ·<constant name="struts.objectFactory" value="spring"/>

    与spring集成时,指定由spring负责action对象的创建

    ·<constant name="struts.enable.DynamicMethodInvocation" value="true" /> 

    该属性设置struts2师傅支持动态方法调用,该属性的默认值是true。如需关闭,则设置value="false"。

                           为多个项目指定配置文件

    <include file=""></include>

    类型转换器

    在转换器类中继承DefaultTypeConverter 实现方法

    public Object convertValue(Map<String, Object> context, Object value,

    Class toType) {

    }

    是双向转换,value为要转换的值 toType 为转换成的类型

    配置属性文件

    action配置转换文件

    filename=ActionClassName-conversion.properties

    其中里面内容是:属性名=转换器class类名)

    全局类型转换器

    filename= xwork-conversion.properties

    其中里面的内容

    要转换属性的类全名=转换器类全名

    访问添加属性

    ActionContext对象

     example: ActionContext.getContext.getSession.put("name""liu");

    ServletActionContext对象

    example:HttpServletRequest request= ServletActionContext.getRequest();

    文件的上传

    用到工具类fileUtils.copy(from,to);

    1.form中指定:enctype="multipart/form-data"

    2.可以通过file的属性名+FileName得到文件名,+ContentType文件类型

    3.多文件用属性名为数组input name 相同

    自定义拦截器

    自定义拦截器实现接口Interceptor

    通过拦截器return  arg0.invoke();'

    未通过返回视图名

    Struts.xml中配置拦截

    <interceptors>

    <interceptor name="permission" class="my.demo1.PermissionInterceptor"></interceptor>

    <interceptor-stack name="permissionStack">

    <interceptor-ref name="defaultStack"></interceptor-ref>提供的)

    <interceptor-ref name="permission"></interceptor-ref>

    </interceptor-stack>

    </interceptors>

    <action name="Load_*" class="my.demo1.Load" method="{1}">

    <interceptor-ref name="permission"></interceptor-ref>

    <result name="success" type="redirect">/index.jsp</result>

    </action>

    输入校验

    Action中继承ActionSupport

    重写validate方法

    校验没通过返回"input"视图名

    对指定方法校验校验

    validate+方法名(首字母大写)

                                   xml实现表单校验

    首先需要继承ActionSupport

    没通过返回"input"视图

    对所有的action方法进行校验

    xml 文件名 actionClassName-validation.xml

    对指定的action方法进行校验 actionCalssName-actionName-validation.xml

    详细的校验配置看文档

                                  全局视图定义

    <global-results>

    <result name="message">/WEB-INF/jsp/LoadState.jsp</result>

    </global-results>

    方法可以直接返回视图名

    对于使用其他包的全局视图可以继承他包

                                     sdtruts2 的国际化

    1.struts.xml配置文件中添加

    <constant name="struts.custom.i18n.resources" value="Resource" />

    Resource_zh_CN.properties(Resourcevalue对应)

    2配置action范围的资源文件

    actionClassName_zh_CN.properties

    3配置包范围的资源文件package_zh_CN.properties(package固定写法)

    显示资源用

    <s:text name="user">(占位符)

        <s:param>ling</s:param>

          <s:param>ssd</s:param>

        </s:text>

        <s:text name="habit"></s:text>{无占位符}

    在表单中通过<s:textfield key="user"></s:textfield>

    action方法中继承Actionsupport 通过this.getText(key,string[]{占位符内容});

  • 相关阅读:
    【软件构造】第七章第三节 断言和防御性编程
    【软件构造】第七章第二节 错误与异常处理
    【软件构造】第七章第一节 健壮性和正确性的区别
    【软件构造】第六章第三节 面向可维护的构造技术
    【软件构造】第六章第二节 可维护的设计模式
    【软件构造】第六章第一节 可维护性的度量与构造原则
    【软件构造】第五章第三节 可复用的设计模式
    【软件构造】第五章第二节 设计可复用的软件
    【软件构造】第五章第一节 可复用性的度量、形态和外部观察
    【软件构造】第四章第一节 面向可理解性的构造
  • 原文地址:https://www.cnblogs.com/maybo/p/5182540.html
Copyright © 2011-2022 走看看