本篇主要有:设置struts2匹配的扩展名。使用通配符,值栈,声明式异常以及标签。

设置扩展名:

默认是对.action和不加不论什么扩展名的进行处理。能够设置:

    <constant name="struts.action.extension" value="action,do,"></constant>//对.action,.do和不加不论什么的拦截

通配符:

为了简化action的配置,能够使用通配符,大致写法例如以下:

<action  name="user_*" class="jsky.action.ActionTestAction" method="{1}">
<result name="success" >/pages/{1}.jsp</result>
<result name="error" >/pages/error2.jsp</result>
</action>

规则:优先匹配无通配符的。若多个通配符的action,按先后顺序{1}{2}第一。二个字符串

值栈:

存放action的堆栈,分为对象栈和Map栈

对象栈:  訪问方式:object.propertyName ; object['propertyName'] ; object["propertyName"]


                   对象能够通过一个从零開始的下标来引用. ObjectStack 里的栈顶对象能够用 [0] 来引用, 

          它以下的那个对象能够用 [1] 引用。从[0]个对象開始向下搜索匹配的对象

                     Name:<s:property value="[0].name"/>

                      Pass:<s:property value="pass"/>

Map栈:里边保存着各种 Map:requestMap, sessionMap, applicationMap, parametersMap, attr

                  訪问方式:#object.propertyName ; #object['propertyName'] ; #object["propertyName"]


                  session:<s:property  value="#session.sessionKey2"/>

声明式异常:

指定action出异常时去的页面 。大致使用方法是:

result指定异常后去的页面,exception指的是发生的异常类型

    <action  name="actiontest2" class="jsky.action.ActionTestAction" method="log">
<exception-mapping result="error" exception="java.lang.ArithmeticException"></exception-mapping>
<result name="success" >/pages/show2.jsp</result>
<result name="error" >/pages/error2.jsp</result>
</action>

标签:

struts2带额标签特别多,这里简单提一下:

  • prperty 标签

Pass:<s:property value="pass"/>对象

        session:<s:property  value="#session.sessionKey2"/><br>Map

  • URL标签

     
    <!-- URL标签 -->
    <s:url value="/testurl" var="url">
    <s:param name="testId" value="110"></s:param>
    </s:url>
    ${url }
    <hr>
    自己主动对value值OGNL解析。若希望输入字符串有效。加''
    <s:url value="/testurl" var="url2">
    <s:param name="testId" value="testId"></s:param>
    </s:url>
    ${url }
    <hr>
    <s:url value="/testurl" var="url3">
    <s:param name="testId" value="'testId'"></s:param>
    </s:url>
    ${url3 }
    <hr>
    构建请求action的字符串
    <s:url action="testAction" namespace="/hello" method="login" var="url4"></s:url>
    ${url4}
  • Iterator标签

     
    <s:iterator value="#request.users">
    ${name }:${pass }<br>
    </s:iterator>
  • 表单标签:

    自带排版,自己主动回显等。

最后是一个注冊的功能来巩固这些标签,效果例如以下:

核心的代码例如以下:

input.jsp

<body>
<s:form action="Regis_save">
<s:textfield name="name" label="Name"> </s:textfield>
<s:password name="password" label="Password"></s:password>
<s:radio name="gender" list="#{'1':'male','0':'femal'}" label="Gender"></s:radio>
<s:select name="department" list="#request.department" listKey="departmentId" listValue="departmentName" label="Department"></s:select>
<s:checkboxlist name="role" list="#request.role" listKey="roleId" listValue="roleName" label="Role"></s:checkboxlist>
<s:submit value="submit"></s:submit>
</s:form> </body>

welcome.jsp:

<body>
Name: ${name }<br>
Pass:${password }<br>
Gender:${gender }<br>
Department: ${department }<br>
Role:${role }
</body>

基本的action:

public String input()
{
request.put("department", dao.getDept());
request.put("role", dao.getRole());
return "input";
}
public String save()
{
return "success";
}
private Map<String, Object> request;
@Override
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.request=arg0;
}

struts2基础梳理(二)的更多相关文章

  1. Struts2基础学习(二)—Action

    一.ActionSupport      为了让用户开发的Action类更加规范,Struts2提供了一个Action接口,这个接口定义了Struts2的Action处理类应该实现的规范.下面是标准A ...

  2. java基础梳理--朝花夕拾(二)

    1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{    //访问修饰符 class关键词 ...

  3. Golang 基础之基础语法梳理 (二)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第二章节 Golang 基础之基础语法梳理 (一) Gol ...

  4. java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理

    本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...

  5. #WPF的3D开发技术基础梳理

    原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关 ...

  6. 2. Struts2 基础

    1. Struts2简介 Struts2是一个WEB端MVC框架.作为比较早的MVC 框架之一,Struts2在使用中还是比较多的.虽然个人感受没有SpringMVC还那么的好用 Struts2 官网 ...

  7. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  8. Bootstrap <基础十二>下拉菜单(Dropdowns)

    Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...

  9. RequireJS基础(二)

    上一篇是把整个jQuery库作为一个模块.这篇来写一个自己的模块:选择器. 为演示方便这里仅实现常用的三种选择器id,className,attribute. RequireJS使用define来定义 ...

随机推荐

  1. Loj10153 二叉苹果树

    题目描述 有一棵二叉苹果树,如果数字有分叉,一定是分两叉,即没有只有一个儿子的节点.这棵树共 NN 个节点,标号 11 至 NN,树根编号一定为 11. 我们用一根树枝两端连接的节点编号描述一根树枝的 ...

  2. UVALive 4869 Profits DP

    G - Profits Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status ...

  3. DOM事件绑定方式

    普通事件可以直接绑定 比如document.onmouseover=fn; 或者document.addEventListener("mouseover",fn,flase); a ...

  4. shell中set的用法(转)

    使用set命令可以设置各种shell选项或者列出shell变量.单个选项设置常用的特性. 在某些选项之后-o参数将特殊特性打开.在某些选项之后使用+o参数将关闭某些特性, 不带任何参数的set命令将显 ...

  5. Turtelizer 2 provide JTAG Flash programming and debugging of ARM based boards via USB

    http://www.ethernut.de/en/hardware/turtelizer/ Introducing Turtelizer 2 Overview Turtelizer 2 had be ...

  6. react-native开发总结

    项目地址:http://liu12fei08fei.github.io/blog/41react-native.html 说明 • 项目总结代码地址 • 从项目开始启动(2018-07-02)到项目进 ...

  7. NHibernate的调试技巧和Log4Net配置

    1.查看nhibernate写在控制台里的sql语句 在配置文件中有这么个选项,假如把它设置为true,nhibernate会把执行的sql显示在控制台上. <property name=&qu ...

  8. 优化中的subgradient方法

    哎.刚刚submit上paper比較心虚啊.无心学习.还是好好码码文字吧. subgradient介绍 subgradient中文名叫次梯度.和梯度一样,全然能够多放梯度使用.至于为什么叫子梯度,是由 ...

  9. 如何让access空值变成0?(确切的说是让access Null值变成0)

    方法一 if  IsNull(Me.新_退休费) = True Then Me.新_退休费 = 0 方法二 if Nz(Me.原_退休费) = Me.原_退休费 Then Me.原_退休费 = 0 有 ...

  10. .NET:事务、并发、并发问题、事务隔离级别、锁等相关资料整理

    这里面的有三篇文章,必须要读读:http://technet.microsoft.com/en-us/library/ms189130(v=sql.105).aspx. 这里有一个系列,我还没有读:h ...