12、Struts2高级技术
来源:互联网 发布:python高手之路 第3版 编辑:程序博客网 时间:2024/06/14 05:29
对应第15章
操作普通属性和方法的例子
例:
配置web.xml写类 public class Student{} (P351)// 创建Action类 OGNLAction.javapackage com.lyq.action;import java.util.Map;import com.lyq.bean.Student;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class OGNLAction extends ActionSupport { private static final long serialVersionUID = 1L; // 普通属性name private String name; // 学生对象 private Student student ; // Map类型的request Map<String, Object> request; // 构造方法 @SuppressWarnings("unchecked") public OGNLAction(){ // 实例化学生对象 student = new Student(); // 对学号赋值 student.setId(1); // 对学生姓名赋值 student.setName("张三"); // 对name赋值 name = "tom"; // 获取Map类型的request request = (Map<String, Object>) ActionContext.getContext().get("request"); } // 请求处理方法 @Override public String execute() throws Exception { // 向request添加值 request.put("info", "request测试"); // 返回SUCCESS return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; }}// struts.xml----------------------------------------------<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <!-- 声明常量 --> <constant name="struts.devMode" value="true"></constant> <package name="myPackage" extends="struts-default" namespace="/"> <!-- 定义action --> <action name="ognl" class="com.lyq.action.OGNLAction"> <!-- 结果映射 --> <result name="success">success.jsp</result> </action> </package></struts>// success.jsp-------------------------------------<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>OGNL操作普通属性</title></head><body> <div> <h1>操作普通属性</h1> 属性name值:<s:property value="name"/> <br><hr> 学号:<s:property value="student.id"/><br> <!-- 也可以使用<s:property value="student['id']"/> --> 姓名:<s:property value="student.name"/><br> say()方法:<s:property value="student.say()"/> <br><hr> rquest中的inof值:<s:property value="#request['info']"/> <br> rquest中的inof值:<%= request.getAttribute("info") %> </div></body></html>// index.jsp------------------------------.........<body><a href="ognl.action">测试</a></body>
拦截器
拦截器是个接口,代码如下:
public interface Interceptor extends Serializable{ void destory(); void init(); String intercept(ActionInvocation invocation) throws Exception;
不好用,自己写拦截器时可以继承系统的拦截器抽象类AbstractInterceptor。
案例:为Action对象配置输出执行时间的拦截器,查看执行Action所学的时间。
将Struts2的包放入,配置web.xml在里面添加:<!-- Struts2过滤器 --> <filter> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- Struts2过滤器映射 --> <filter-mapping> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器映射 --> <url-pattern>/*</url-pattern> </filter-mapping>// TestAction.java-----------------------------package com.lyq.action;import com.opensymphony.xwork2.ActionSupport;public class TestAction extends ActionSupport { private static final long serialVersionUID = 1L; public String execute() throws Exception{ // 线程睡眠1秒 Thread.sleep(1000); return SUCCESS; }}// struts.xml---------------------<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <!-- 声明常量(开发模式) --> <constant name="struts.devMode" value="true" /> <!-- 声明常量(在Struts2的配置文件修改后,自动加载) --> <constant name="struts.configuration.xml.reload" value="true" /> <!-- 声明包 --> <package name="myPackge" extends="struts-default"> <!-- 配置Action --> <action name="testAction" class="com.lyq.action.TestAction"> <!-- 配置拦截器,此处的timer拦截器是Struts的内置拦截器--> <interceptor-ref name="timer" /> <!-- 配置返回页面 --> <result>success.jsp</result> </action> </package></struts>// index.jsp<body><a href="testAction.action">测试</a></body>// success.jsp<body>测试成功,请查看控制台程序的用时。</body>***注:执行Action所用时间可以在控制台看到。
案例:struts标签下的用户注册
将Struts2的包放入,配置web.xml在里面添加内容和上面的差不多。// UserAction.javapackage com.lyq.action;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{ private static final long serialVersionUID = 1L; // 用户名 private String name; // 密码 private String password; // 描述 private String description; // 性别 private int sex = 0; // 省份 private String province; // 爱好 private String[] hobby; // 用户注册 public String execute() throws Exception { return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name = name; } 。。。。。。。。。。。。。。。。。 public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String[] getHobby() { return hobby; } public void setHobby(String[] hobby) { this.hobby = hobby; }}// struts.xml<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <!-- 声明常量(开发模式) --> <constant name="struts.devMode" value="true" /> <!-- 声明包 --> <package name="myPackge" extends="struts-default"> <action name="userAction" class="com.lyq.action.UserAction"> <result>success.jsp</result> </action> </package></struts>// index.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%>........<body> <h2>用户注册</h2> <s:form action="userAction" method="post"> <s:textfield name="name" label="用户名" required="true" requiredposition="left"></s:textfield> <s:password name="password" label="密码" required="true" requiredposition="left"></s:password> <s:radio name="sex" list="#{1 : '男', 0 : '女'}" label="性别" required="true" requiredposition="left"></s:radio> <s:select list="{'请选择省份','吉林','广东','山东','河南'}" name="province" label="省份"></s:select> <s:checkboxlist list="{'足球','羽毛球','乒乓球','蓝球'}" name="hobby" label="爱好"></s:checkboxlist> <s:textarea name="description" cols="30" rows="5" label="描述"></s:textarea> <s:submit value="注册"></s:submit> <s:reset value="重置"></s:reset> </s:form></body>// success.jsp<body> <h3>恭喜您,注册成功!</h3> <ul> <li>用户名:<s:property value="name"/></li> <li>密码:<s:property value="password"/></li> <li>性别:<s:if test="sex==0">女</s:if><s:else>男</s:else></li> <li>省份:<s:property value="province"/></li> <li>爱好:<s:property value="hobby"/></li> <li>描述:<s:property value="description"/></li> </ul></body>
界面如图:
0 0
- 12、Struts2高级技术
- Struts2高级技术
- Struts2高级
- 高级技术
- struts2技术
- struts2 doubleselect高级示例
- struts2的高级主题
- Struts2标签高级应用
- Struts2-02-高级特性
- struts2高级主题
- VC高级调试技术
- 高级缓存技术
- 高级汇编语言技术
- 高级汇编语言技术
- 高级碰撞检测技术
- 高级纹理技术
- 网格模型高级技术
- 高级碰撞检测技术
- eclipse 指定 jdk
- Runtime 使用场景
- Algorithms Every Data Scientist Should Know: Reservoir Sampling
- Java三大框架之spring aop 配置错误一
- TCP长连接和短连接
- 12、Struts2高级技术
- git pull命令更新本地项目的时候遇到“No remote repository specified……”的错误
- Android View坐标getLeft, getRight, getTop, getBottom解惑
- zookeeper伪分布式错误解决:无法创建目录"/opt/beh/logs": 权限不够
- AngularJs是什么?与jQuery有什么不同?
- java基础的练习题
- [Git] error: Your local changes to the following files would be overwritten by merge
- StringBuilder&StringBuffer&String
- Checking Whether a String is Numeric