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;
}
时间: 2024-08-03 20:18:23

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

Struts2基础学习(二)&mdash;Action

一.ActionSupport      为了让用户开发的Action类更加规范,Struts2提供了一个Action接口,这个接口定义了Struts2的Action处理类应该实现的规范.下面是标准Action接口的代码: public interface Action { public static final String SUCCESS = "success"; public static final String NONE = "none"; public

struts2基础梳理(一)

前段时间大致看了看<轻量级Java EE企业应用实战>,说实话真心感觉没看多懂,其中看的最明白一点的就是struts2了,但也是基本不懂的状态.最近又该学ssh框架了,只能找相关的培训视频来系统的学习,当然时间也不是太多,所以只能快速进行重点的知识点的学习,这里记录一下大致过程,方便复习和巩固. 首先,struts2是基于对Filter的封装而不是Servlet,因为Filter比Servlet更强大,Servlet能干的事,Filter基本上都能干,反过来则不行. 配置: struts2配置

Struts2基础学习总结(二)

Struts2基础学习总结(二)---struts.xml参数 1.常量 使用<constant name="" value=""></constant>元素进行描述 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Strut

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

1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{    //访问修饰符 class关键词用于声明类使用 后面跟类名   public static void main(String args[]){//程序的入口,主函数main方法:        System.out.println("Hello world!");// 输出语句   }} Java语言区分大小写:publ

struts2 知识梳理

一:struts.xml配置详解: 1.<include> 表示引入其他配置文件 2.<constant> 定义常量 3.<package>:  属性 是否必需 描述name 是 包名,作为其它包应用本包的标记extends 否 设置本包继承其它包namespace 否 设置包的命名空间,会改变url,abstact 否 设置为抽象包 4<action>和<result> <action>有name,class,method,conv

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

本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口,实现call方法 由于Java的设计,只支持单继承,但是支持多实现形式,所以一般面向接口开发,Runnable接口与Callable接口的区别在于Callable接口中的call方法是带返回值的,其返回一个Future的异步类,我们可以通过Future的get方法获取结果,如果线程还没有执行完,g

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

原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关原因,需要用的3D技术,虽然内心没有底只能硬着头皮上了.最后效果还不错. 开发完之后,对WPF的开发小有所感,于是打算写下来,把相关知识梳理下.给正在学习WPF技术伙伴们一点帮助. 能力平平,知识有限,如有错误,还望雅正. 作为微软推广的一门软件开发技术,肯定会遵循一个基本准则:怎么方便怎么来,怎么

Python基础(二)

Python基础(二) Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和xrange 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.