Struts2_Action

从ActionSupport继承,按照约定写好方法add等,用Domain Model接收参数,需要访问session用IOC访问 
  • Helloworld~
    1. copy struts.xml → src
    2. add (类库 .jar 文件) → lib
    3. 配置web.xml
       
  • action执行过程 图片 
  • struts2作用是把请求和视图分开
  • struts2永不会有线程同步的问题,每次访问action都会自动new一个新对象

    • namespace
      • 决定了action的访问路径,默认为"",可以接收所有路径的actionnamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action,或者/xxx/yyy/index.action.namespace最好也用模块来进行命名
     
    • 具体视图的返回由用户自己定义的action来决定。具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容。具体action的实现可以使一个普通的java类,里面有public String execute方法即可,或者实现action接口。不过最常用的是从actionsupport继承,好处在于可以直接使用Struts2封装好的方法。
     
    •  struts中的路径问题 
      • 是根据action的路径而不是jsp路径来确定,尽量不要使用相对路径index.jsp。解决方法统一使用绝对路径(在jsp中用request.getContextRoot方式拿到webapp的路径)或指定basePath。String path = request.getContextPath();//取得webapplication项目路径 。String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";//取得http、localhost、8080、path字符串,获得绝对路径http://localhost:8080/webapp/
       
    • 实现action最常用的方法,从ActionSupport继承
      • 1)如果你的Action类是继承自ActionSupport的话,确切的说是重写了execute方法,ActionSupport里的默认实现就是返回"success"视图。因此,你可以不实现execute方法,只要你的struts.xml里有"success"对应的result即可。2)如果你的Action类没有继承ActionSupport,而你又没有在struts.xml中对应<action>标签中用method属性指定你自己的方法的话,默认就要找execute方法,这时是必须要实现execute方法的,否则Struts2会找不到对应的方法而报错。不过,大部分情况下都是继承ActionSupport的(比如输入验证、文件上传等功能就要求必须继承)。还有,不管你写没写execute方法,还是可以用<action>标签的method属性指定其他方法的。
     
    • action执行时不一定要执行execute方法,可以在配置文件中配置action是用method=来指定执行那个方法,也可以在url地址中动态指定(动态方法调用DMI 推荐),叹号!调用action的方法。例:http://localhost:8080/struts2_user/user/user!add    
     
    •  开发模式: 在struts.xml中设置 <constant name="struts.devMode" value="true" />
    • 对于请求,action先匹配最精确的,包括*的则看action前后位置
    •  通配符将配置量降到最低,约定优于配置
      • <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}"> <result>/{1}_{2}_success.jsp</result> </action>
     
    •  接收参数: 
     
    •  简单参数验证 this.addFieldError("name","value");
    1. 调用struts2标签库 <%@taglib uri="/struts-tags" prefix="s"%>  (uri指定taglib在什么位置,prefix指定标签前缀)
    2. 不常用标签  <s:fielderror fieldName="name"/> 固定xhtml为展现标签的默认主题
    3. 常用标签 <s: property value="errors.name[0]"/> (取得action属性中value stack的内容) 
    4. 常用debug标签 <s:debug></s:debug> 
     
    •  访问web元素
      1.  取得Map类型(request,session,application)  依靠struts容器 或 Ioc(inverse of control)
      2. <s:property value="#request.r1"/>   取得action属性中stack context的内容,需要加#
      3. 取得真实类型 (HttpRequest,HttpSession,ServletContext)

    • 包含文件配置 <include file="login.xml"/>
    • 默认action <default-action-ref name="index"></。。。>
    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值