struts2之constant介绍


struts2提供给我们更为灵活的设计,他的很多东西都是可以手动配置的,下面介绍下他的一些长用的 constant作用和配置

struts.serve.static.browserCache 该属性设置浏览器是否缓存静态内容。当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false。

struts.enable.DynamicMethodInvocation 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false。

struts.enable.SlashesInActionNames 该属性设置Struts 2是否允许在Action名中使用斜线,该属性的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该属性为true。

struts.tag.altSyntax 该属性指定是否允许在Struts 2标签中使用表达式语法,因为通常都需要在标签中使用表达式语法,故此属性应该设置为true,该属性的默认值是true。

struts.devMode该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,该属性的 默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。

struts.i18n.reload该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。该属性默认值是false。在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false。

提示 开发阶段将该属性设置了true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;产品发布阶段应该将该属性设置为false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能。

struts.ui.theme该属性指定视图标签默认的视图主题,该属性的默认值是xhtml。

struts.ui.templateDir该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件。

struts.ui.templateSuffix该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板。

struts.configuration.xml.reload该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。

struts.velocity.configfile该属性指定Velocity框架所需的velocity.properties文件的位置。该属性的默认值为velocity.properties。

struts.velocity.contexts该属性指定Velocity框架的Context位置,如果该框架有多个Context,则多个Context之间以英文逗号(,)隔开。

struts.velocity.toolboxlocation该属性指定Velocity框架的toolbox的位置。

struts.url.http.port该属性指定Web应用所在的监听端口。该属性通常没有太大的用户,只是当Struts 2需要生成URL时(例如Url标签),该属性才提供Web应用的默认端口。

struts.url.https.port该属性类似于struts.url.http.port属性的作用,区别是该属性指定的是Web应用的加密服务端口。

struts.url.includeParams该属性指定Struts 2生成URL时是否包含请求参数。该属性接受none、get和all三个属性值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数。

struts.custom.i18n.resources该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。

struts.dispatcher.parametersWorkaround 对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。该属性的默认值是false。对于 WebLogic、Orion和OC4J服务器,通常应该设置该属性为true。

struts.freemarker.manager.classname 该属性指定Struts 2使用的FreeMarker管理器。该属性的默认值是 org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts 2内建的FreeMarker管理器。

struts.freemarker.wrapper.altMap该属性只支持true和false两个属性值,默认值是true。通常无需修改该属性值。

struts.xslt.nocache 该属性指定XSLT Result是否使用样式表缓存。当应用处于开发阶段时,该属性通常被设置为true;当应用处于产品使用阶段时,该属性通常被设置为false。

struts.configuration.files 该属性指定Struts 2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该属性的默认值为struts- default.xml,struts-plugin.xml,struts.xml,看到该属性值,读者应该明白为什么Struts 2框架默认加载struts.xml文件了。

()

struts2是通过增强(advice),来执行方法的;
    个人猜测是:通过struts.xml,配置出增强的,容器加载的时候,他自动如Ioc一般,自动创建类,以及将表单
    数据注入到action实现类的方法里,然后再利用反射自动运行execute方法;
    当然在execute方法之前会织入一些框架的拦截器;

 1.struts.xml格式:

  1.     <struts>
  2.         <package name="struts2"  extends="struts-default"  namespace ="/book" >
  3.         //一种格式,name是随意起的,namespace是命名空间^_^,嘿嘿,命名空间;
  4.         
  5.             <default -action-ref  name="lost"  />
  6.             //如果没有找到对应的此name的值;
  7.         
  8.             <action name="login"  class ="com.wang.action.LoginAction"  method="add"
  9.             //name,对应表单递交action; class是表明action的实现类 ,method是相当于配置动态Action的方法;
  10.                
  11.                 <result name="success" >/success.jsp</result>   
  12.                 //通过action类返回的是字符串,与name匹配,调转到某个页面;     
  13.            
  14.             </action>
  15.             
  16.             <action name="lost" >
  17.                 <result>/lost.jsp</result>
  18.             </action>
  19.         </package>
  20.     </struts>

    介绍struts的各种属性的配置:
        constant:<constant name="" value="" />
            他是等于在struts.properties中配置struts2的那些核心属性;
        include:<include file="struts-XXX.xml" />
            包含,包含其他的struts-XXX.xml文件配置;

struts2能够在配置文件书写EL表达式,他可以使得配置文件更加灵活,例如:

         

  1.   <struts>
  2.          <package  name="struts"  extends ="struts-default" >
  3.                     <action name="login"  class ="action.Action" >
  4.                         <result name="succee" >/${name}.jsp</result>
  5.                         //可以由jsp界面控制转向页面;
  6.                      </action>
  7.             </package >
  8.       </struts>

  解读<result >属性type:
         dispatcher 转发
            参数: location 具体的jsp界面;
          redirect  重定向
          chain  action链

    只是简单的写一些常用的type,其他的病不是很常用到,至少在下并没有使用到;

 解读: <constant>
          属性 name :
               struts.i18n.encoding  编码  value-"GBK"
               struts.i18n.reload  每次是否重新加载国际化资源文件  value-true/false
               struts.configuration.xml.reload  每次修改struts.xml,服务器重新加载; value-true/false
               struts.serve.static.browserCache  设置是否缓存静态页面; value-true/false
               struts.devMode  是否是开发模式,可以得到更到调试信息  value-true/false;


2.execute方法配置:
 
   调用ActionContext的方法:
           ActionContext.getContext();     返回一个ActionContext对象;
        ActionContext.getContext().getSession()     返回一个Session对象的Map;
        ActionContext.getContext().getApplication()  返回一个servlet的Application对象;
        ActionContext.getContext().getParameters()   相当于httpParameters对象的getParameterMap();
   
    调用ServletActionContext的方法:
         ServletActionContext.getRequest()  返回一个request对象;
         ServletActionContext.getRequest()  返回一个respose对象;
         ServletActionContext.getServletContext()  返回一个ServletContext对象;
        普通bean上添加execute方法;

  1. public  String execute() throws Exception {
  2.             System.out .print(this .getName());
  3.             Map voPut= ActionContext.getContext().getSession();
  4.             //ActionContext,方法是储存到web对象中方法
  5.             voPut.put("user"this );
  6.             return  "success" ;
  7.         }

底层是将bean的所有属性封装到ValueStack的对象中,然后将ValueStack封装在request中;

 

  1.        <%   
  2.         ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack" );
  3.         String name = (String[])vs.findValue("name" );
  4.         %>


数据印证:
        bean继承ActionSupport类,并重写他的validate方法以及在配置文件中添加input属性;
       
        xml:

           

  1.  <result name="input" >/index.jsp</result>  


        bean:

          

  1. public  void  validate() {
  2.                 if (name==null ||name.equals("" )) {
  3.                     this .addFieldError("name""用户名不能为空" );
  4.                     //添加页面的错误信息(textfield的名字,错误信息),
  5.                 }
  6.             }

3.web.xml的配置:

     

  1. <!-- 定义Struts2的FilterDispathcer的Filter -->
  2.         <filter>
  3.             <filter-name>struts2</filter-name>
  4.             <filter-class >org.apache.struts2.dispatcher.FilterDispatcher</filter-class >
  5.         </filter>
  6.         <!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
  7.         <filter-mapping>
  8.             <filter-name>struts2</filter-name>
  9.             <url-pattern>/*</url-pattern>
  10.         </filter-mapping>


        4.标签:

      

  1.  <%@taglib prefix="s"  uri="/struts-tags" %>


    5.struts2类中似于struts1的写法,将POJO完全的变成ActionForm,然后Action独立,继承ModelDriven方法;
     POJO类的写法,咱就省略了,写了也没啥意思,还占地方,没办法的事情;action的写法
   

      

  1. public  class  Actions implements ModelDriven<User> {
  2.         //ModelDriven接口是提供POJO与Action的连接
  3.             private  User user = new  User();
  4.             //必须初始化;
  5.             public  String execute() {
  6.                 System.out .print(user.getName());
  7.                 return  "succee" ;
  8.             }
  9.             public  User getModel() {
  10.                 return  user;
  11.             }
  12.         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值