20.struts2的数据填充和类型转换.md
目录
1. struts2的自动填充
当jsp和Action类中对象名称一致时候,拦截器会自动拦截填充。
拦截器:
Demo:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="${pageContext.request.contextPath}/user_register.action" method="post">
用户名:<input type="text" name="name"><br/>
年 龄:<input type="text" name="age"><br/>
生 日:<input type="text" name="birth"><br/>
<input type="submit" value="注册">
</form>
</body>
</html>
package per.liyue.struts2_datafomat;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
/*
* 注意:一定要提供Setter方法
*/
private String name;
private int age;
private Date birth;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public String register(){
System.out.println(name);
System.out.println(age);
System.out.println(birth);
return "register";
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="data_conversion" extends="struts-default" >
<!-- 使用通配符实现 -->
<action name="user_*" class="per.liyue.struts2_datafomat.UserAction" method="{1}">
<result name="{1}">/user.jsp</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 在总配置文件中引入其他配置文件 -->
<include file="per/liyue/code/struts2demo/config_HelloStruts2.xml"></include>
<include file="per/liyue/code/struts2_data/data.xml"></include>
<include file="per/liyue/struts2_datafomat/data_conversion.xml"></include>
</struts>
在浏览器地址栏输入:
http://localhost.:8080/StrutsDemo1/user_register.action
填写后提交,得到输入内容
2. struts2的对象填充
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="${pageContext.request.contextPath}/user_register.action" method="post">
用户名:<input type="text" name="user.name"><br/>
年 龄:<input type="text" name="user.age"><br/>
生 日:<input type="text" name="user.birth"><br/>
<input type="submit" value="注册">
</form>
</body>
</html>
package per.liyue.struts2_datafomat;
import java.util.Date;
public class User {
/*
* 注意:一定要提供Setter方法
*/
private String name;
private int age;
private Date birth;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
}
package per.liyue.struts2_datafomat;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
/*
* 注意:提供setter和getter方法
*/
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String register(){
System.out.println(user.getName());
System.out.println(user.getAge());
System.out.println(user.getBirth());
return "register";
}
}
其他保持不变,浏览器地址栏输入:
http://localhost.:8080/StrutsDemo1/user_register.action
填写后提交,得到输入内容.
3. struts2的类型转换器
对于一些没有按照指定格式输入的内容,那么可以用自定义的类型转换器来处理:
3.1 类继承关系
---TypeConverter
------DefaultTypeConverter
---------StrutsTypeConverter
3.2 局部转换器
步骤:
编写转换器类:继承转换类
在包下建立属性文件,文件名称严格按照格式
- Action名称-conversion.properties
- 然后配置:需要转换的字段名=自定义转换器类的权限名称
例如birthday=cn.itcast.convertor.DateTypeConvertor
3.3 全局转换器
步骤:
- 继承转换类,实现抽象方法
- 在包下建立属性文件,严格按照格式
- xwork-conversion.properties
3.4 注意
二者可以同时共用,但是同时出现时候优先局部转换器
20.struts2的数据填充和类型转换.md的更多相关文章
- Struts2基础数据校验和框架校验
一:三种校验的方式 1.用validate()方法实现数据校验 2.用execute()方法实现数据校验 3.用validateXxx()方法实现数据校验 1.用validate()方法实现数据校验 ...
- (转)struts2:数据校验,通过XWork校验框架实现(validation.xml)
转载自:http://www.cnblogs.com/nayitian/p/3475661.html struts2:数据校验,通过XWork校验框架实现(validation.xml) 根据输入 ...
- .net dataGridView当鼠标经过时当前行背景色变色;然后【给GridView增加单击行事件,并获取单击行的数据填充到页面中的控件中】
1.首先在前台dataGridview属性中增加onRowDataBound属性事件 2.然后在后台Observing_RowDataBound事件中增加代码 protected void Obser ...
- struts2:数据校验,通过XWork校验框架实现(validation.xml)
根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种: 参考:struts2:数据校验,通过Action中的validate()方法实现校 ...
- Laravel 5.2 教程 - 数据填充
一.简介 Laravel提供的填充类(seed),可以让大家很容易的实现填充测试数据到数据库.所有的填充类都位于database/seeds目录.填充类的类名完全由你自定义,但最好还是遵循一定的规则, ...
- laravel的工厂模式数据填充:
数据表post中的字段结构. database\factory\UserFactory.php $factory->define(App\Post::class,function (Faker ...
- Laravel 实践之路: 数据库迁移与数据填充
数据库迁移实际上就是对数据库库表的结构变化做版本控制,之前对数据库库表结构做修改的方式比较原始,比如说对某张库表新增了一个字段,都是直接在库表中执行alter table xxx add .. 的方式 ...
- jQuery.fill 数据填充插件
博客园的伙伴们,大家好,I'm here,前段时间特别的忙,只有零星分散的时间碎片,有时仰望天空,有时发呆,有时写代码,正如下面给大家介绍的这个jQuery.fill插件,正是在这样的状态下写出来的. ...
- 时间格式的处理和数据填充和分页---laravel
时间格式文档地址:http://carbon.nesbot.com/docs/ 这是些时间格式,只需要我们这么做就可以 我们在模板层,找到对应的模型对象那里进行处理就可以啦 2018-11-08 16 ...
随机推荐
- linux环境下运行程序格式错误的问题,bash: ./helloworld: cannot execute binary file: Exec format error
在编译完quecOpen的example helloworld之后,我运行此程序,结果报错,详情如下: ricks@ubuntu:~/share/project/ql-ol-sdk/ql-ol-ext ...
- Linux 文件,目录,压缩,解压缩操作
2018/11/20 1.find -name 'pom.xml' | xargs perl -pi -e 's|oldString|newString|g' (批量替换) ( 命令行中使用Perl ...
- css自定义鼠标
亲们支持我的新博客哦==>地址(以后更新会尽量在新博客更新,欢迎大家访问加入我的后宫w) ) css自定义鼠标 效果展示==> 注意: 1.支持jpg/png/ico格式的展示鼠标格式,为 ...
- NoSQL学习1
MongoDB使用C++语言编写的一个基于分布式的文件存储的开源数据库.可以在承受高负载的情况下,保证服务器的性能. MongoDB将数据存储成为一个文档,数据结构有键值对组成.类似于JSON,字段值 ...
- sql生成随机不重复字符串 可指定长度
存储过程: create procedure dbo.GetRandStr () output) AS BEGIN ), ), @ss varchar DECLARE @I INTEGER, @cou ...
- LeetCode 失败的尝试 10. regular expression matching & 正则
Regular Expression Matching 看到正则就感觉头大,因为正则用好了就很强大.有挑战的才有意思. 其实没有一点思路.循环的话,不能一一对比,匹配模式解释的是之前的字符.那就先遍历 ...
- Oracle 命令
net start oracleserviceorcl 启动服务 sql>shutdown 关闭数据库 sql>startup 打开数据库 sql> sel ...
- 8.2.优化SQL语句
8.2.优化SQL语句 数据库应用程序核心操作逻辑都是通过执行SQL语句来执行,不管是直接通过解释器还是通过后台API提交. 调优手册里面的这一节内容帮助各种各样MySQL程序加快速度.手册包括SQL ...
- 编辑器:IDE(深坑不填)
http://top.jobbole.com/37542/ Facebook 和 GitHub 两大巨头联手推出 Atom-IDE 2017-9-22 https://www.zhihu.com/qu ...
- python [] 数组 list 交集 并集 差集
>>> a = [1,2,3] >>> b = [2,4,5] >>> list(set(a).intersection(set(b))) [2] ...