struts2的一些用法(一):struts2的配置

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

   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值