struts2基础梳理(二)
本篇主要有:设置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基础梳理(二)的更多相关文章
- Struts2基础学习(二)—Action
一.ActionSupport 为了让用户开发的Action类更加规范,Struts2提供了一个Action接口,这个接口定义了Struts2的Action处理类应该实现的规范.下面是标准A ...
- java基础梳理--朝花夕拾(二)
1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{ //访问修饰符 class关键词 ...
- Golang 基础之基础语法梳理 (二)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第二章节 Golang 基础之基础语法梳理 (一) Gol ...
- java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理
本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...
- #WPF的3D开发技术基础梳理
原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关 ...
- 2. Struts2 基础
1. Struts2简介 Struts2是一个WEB端MVC框架.作为比较早的MVC 框架之一,Struts2在使用中还是比较多的.虽然个人感受没有SpringMVC还那么的好用 Struts2 官网 ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- Bootstrap <基础十二>下拉菜单(Dropdowns)
Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...
- RequireJS基础(二)
上一篇是把整个jQuery库作为一个模块.这篇来写一个自己的模块:选择器. 为演示方便这里仅实现常用的三种选择器id,className,attribute. RequireJS使用define来定义 ...
随机推荐
- 王彪-20162321《程序设计与数据结构2nd》-第十一周学习总结与实验报告
邻接矩阵实现 例图 分析 变量 需要一个链表来保存数据-即保存结点 需要一个二维数组来保存每个变得权值,有则填入具体数值,没有则用0 定义一个保存边个数的值 函数方法 得到图中边的个数 得到结点的数据 ...
- Java基础(1)JDK的安装与环境变量配置
最近在复习Java基础,第一课就是JDK的安装配置以及环境变量的配置,不多废话,直接开始吧 (1)去Oracle官方网站下载JDK 1.8 Java的历史想必大家也清楚,Sun公司开发的一门面向对象的 ...
- js的继承实现方式
1. 使用call或者apply来实现js对象继承 function Animal(age){ this.age = age; this.say = function(){ console.log(' ...
- [Visual Studio] 重置默认设置 还原默认设置
恢复默认设置的2种方法 如果VS出现问题或设置变乱,可以通过恢复默认设置使之回到安装成功时的状态,从而解决出现的问题.VS恢复默认设置的方法有2种,分别是:通过“导入和导出设置”实现和通过命令实现. ...
- 亚马逊API的使用
如上文所说,一个日本友人想要在亚马逊开店,托我帮他做一个小应用.他想实现的主要功能是,定时获取某个商品的最低价,如果这个价格不在他设定的范围内了,就给他发送邮件提醒. 为了帮助我完成程序,他还给我找到 ...
- HDU 4730 We Love MOE Girls (2013成都网络赛,签到水题)
We Love MOE Girls Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- springboot-线程池简单使用
最近做项目,关于订单创建时候因为需要调用远程http服务获取数据,然后校验并写入数据库和修改数据库, 导致接口效率低,所以想到实现异步操作的方式解决. 在调用远程接口成功的时候即认为接口处理成功,返回 ...
- 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安装ik分词器
系列文章:[建议从第二章开始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安 ...
- [活动已结束]《深入理解Android:Wi-Fi、NFC和GPS卷》CSDN社区活动
今天有一个CSDN社区活动,解答关于Android系统的学习.认识.开发等方面的问题,并就<深入理解Android:Wi-Fi.NFC和GPS卷>一书为大家答疑解惑,了解Android F ...
- Java: 复制文件最快方法
利用Java复制文件到处都可以用到,这里总结了一个类供大家参考.里面总共有两个方法: public static boolean copyFile(String srcFileName, String ...