- 浏览: 3012187 次
- 性别:
- 来自: 河南
文章分类
- 全部博客 (340)
- Java综合 (26)
- 程序人生 (53)
- RIA-ExtJS专栏 (18)
- RIA-mxGraph专栏 (4)
- RIA-Flex4专栏 (43)
- 框架-Spring专栏 (16)
- 框架-持久化专栏 (22)
- 框架-Struts2专栏 (11)
- 框架-Struts专栏 (12)
- SQL/NOSQL (12)
- 报表/图表 (2)
- 工作流 (5)
- XML专栏 (4)
- 日常报错解决方案 (5)
- Web前端-综合 (12)
- Web/JSP (14)
- Web前端-ajax专栏 (14)
- Web前端-JQuery专栏 (9)
- IDE技巧 (6)
- FILE/IO (14)
- 远程服务调用 (2)
- SSO单点登录 (2)
- 资源分享 (22)
- 云计算 (1)
- 项目管理 (3)
- php专栏 (1)
- Python专栏 (2)
- Linux (1)
- 缓存系统 (1)
- 队列服务器 (1)
- 网络编程 (0)
- Node.js (1)
最新评论
-
hui1989106a:
我的也不能解压,360和好压都试了,都不行
《Spring in Action》完整中文版分享下载 -
temotemo:
这些example有些过时了,官方建议使用HBase-1.0 ...
Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询 -
zy8102:
非常感谢~
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
重命名了一下搞定了
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载 -
zy8102:
为什么下载以后老解压不了呢?
HeadFirst系列之七:《深入浅出SQL》原版高清PDF电子书分享下载
在Struts开发中经常可以发现,用户提交的请求数据中,基本数据类型和java.sql.Date或java.sql.Time类型都能被封装到ActionForm类中,在页面可以直接取到用户输入的数值。唯有java.util.Date的数据不能封装,究其原因就是在提交请求时,RequestProcessor类在进行数据收集时没有将java.util.Date类型的数据进行转换。所以查看Struts源代码可以发现我们要做的就是简单的两件事
第一,如源代码中装换示例一样,自定义一个类实现org.apache.commons.beanutils.Converter接口
package com.javacrazyer.web.common;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.commons.beanutils.Converter;
/**
* 自定义的java.util.Date的类型转换器
*
*/
public class UtilDateConverter implements Converter {
public static final String DATE_PATTERN = "yyyy-MM-dd";
/* (non-Javadoc)
* @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object)
*/
@Override
public Object convert(Class arg0, Object arg1) {
Object obj = null;
if(java.util.Date.class == arg0){
if(arg1 != null && arg1 instanceof String){
DateFormat df = new SimpleDateFormat(DATE_PATTERN);
try {
obj = df.parse((String)arg1);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
return obj;
}
}
第二,在web项目进行部署时应该像源代码在ActionServlet中一样做一下注册的工作
要实现注册那么必须写一个注册的Servlet类;
package com.javacrazyer.web.common;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.commons.beanutils.ConvertUtils;
public class UtilDateConverterRegisterServlet extends HttpServlet {
public void init() throws ServletException {
ConvertUtils.register(new UtilDateConverter(), java.util.Date.class);
}
}
然后在web.xml配置中将注册的Servlet类设定为自动启动但级别要比ActionServlet低些
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>UtilDateConverterRegisterServlet</servlet-name>
<servlet-class>com.javacrazyer.web.common.UtilDateConverterRegisterServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
示例
input.jsp
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts应用:ActionForm作为类型转换器</title>
</head>
<body>
<h3>Struts应用:ActionForm作为类型转换器</h3><hr/>
<form id="myForm" name="myForm" action="registe.do" method="post">
<table border="1" width="600px">
<tr>
<td>int类型的数据</td>
<td><input type="text" name="intValue"/></td>
</tr>
<tr>
<td>double类型的数据</td>
<td><input type="text" name="doubleValue"/></td>
</tr>
<tr>
<td>char类型的数据</td>
<td><input type="text" name="charValue"/></td>
</tr>
<tr>
<td>boolean类型的数据</td>
<td><input type="text" name="boolValue"/></td>
</tr>
<tr>
<td>java.util.Date类型的数据</td>
<td><input type="text" name="dateValue"/></td>
</tr>
<tr>
<td>java.sql.Date类型的数据</td>
<td><input type="text" name="sqlDateValue"/></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
</html>
RegisterForm.java
package com.javacrazyer.web.formbean;
import java.util.Date;
import org.apache.struts.action.ActionForm;
/**
* 用来收集客户端提交数据.
* 要收集数据的属性的名一定要跟请求参数名相同
*
*/
public class RegisterForm extends ActionForm {
private static final long serialVersionUID = 6619272689058619128L;
private int intValue;
private double doubleValue;
private char charValue;
private boolean boolValue;
private Date dateValue;
private java.sql.Date sqlDateValue;
public java.sql.Date getSqlDateValue() {
return sqlDateValue;
}
public void setSqlDateValue(java.sql.Date sqlDateValue) {
this.sqlDateValue = sqlDateValue;
}
public Date getDateValue() {
return dateValue;
}
public void setDateValue(Date dateValue) {
this.dateValue = dateValue;
}
public int getIntValue() {
return intValue;
}
public void setIntValue(int intValue) {
this.intValue = intValue;
}
public double getDoubleValue() {
return doubleValue;
}
public void setDoubleValue(double doubleValue) {
this.doubleValue = doubleValue;
}
public char getCharValue() {
return charValue;
}
public void setCharValue(char charValue) {
this.charValue = charValue;
}
public boolean getBoolValue() {
return boolValue;
}
public void setBoolValue(boolean boolValue) {
this.boolValue = boolValue;
}
}
WEB-INF/struts-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<!-- ================================================ Form Bean Definitions -->
<form-beans>
<form-bean name="loginForm" type="com.javacrazyer.web.formbean.LoginForm"/>
<form-bean name="regForm" type="com.javacrazyer.web.formbean.RegisterForm"/>
</form-beans>
<!-- =========================================== Action Mapping Definitions -->
<action-mappings>
<action path="/registe"
name="regForm"
scope="request"
validate="false"
type="com.javacrazyer.web.action.RegisterAction">
<forward name="result" path="/result.jsp"/>
</action>
</action-mappings>
</struts-config>
result.jsp
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>注册信息</title>
</head>
<body>
<h3>注册信息</h3><hr/>
intValue: ${regForm.intValue }<br/>
doubleValue: ${regForm.doubleValue }<br/>
charValue: ${regForm.charValue }<br/>
boolValue: ${regForm.boolValue }<br/>
java.sql.Date: ${regForm.sqlDateValue }<br/>
java.util.Date: ${regForm.dateValue }<br/>
</body>
</html>
执行效果
看到了吗,成功的接收了java.util.Date的值
发表评论
-
Struts温习(11)--Action中使用BeanUtils.copyProperties
2011-05-06 09:32 2283from:http ... -
Struts温习(10)--利用Token解决重复提交
2010-11-14 23:55 2154平时网上注册大家都经历过,比如用户在注册成功之后,再打击后退按 ... -
Struts温习(9)--关于异常的处理
2010-11-14 22:45 1151本示例是以一个计算器的例子来写的,为了方便,这里处理的是算术异 ... -
Struts温习(8)--文件上传
2010-11-14 22:26 1170关于Struts上传的之前已经讲过,具体请看这里 如果需要更 ... -
Struts温习(7)--国际化的使用
2010-11-13 17:07 1387这里的国际化其实跟第五篇文章和第一篇文章要实现的效果一样,也是 ... -
Struts温习(6)--taglib标签的使用
2010-11-12 16:31 3410关于taglib的标签使用,我倒是不太喜欢,本人更倾向于使用J ... -
Struts温习(5)--ActionForm的validator方法验证
2010-11-12 15:06 1816现在这个验证呢,跟第一篇文章的那个还有所不一样,之前的是配置资 ... -
Struts温习(3)--DispactherAction的用法
2010-11-12 14:14 1361首先我们来考虑一个问 ... -
Struts温习(2)--工作原理解析
2010-11-12 11:43 1519了解一个框架,必须得 ... -
Struts温习(1)--最基础的示例
2010-11-12 10:39 2460有关Hibernate的知识大部分都已经温习完毕,今天开始转向 ... -
Struts中上传文件需要注意的地方
2010-03-18 14:23 2442今天突然想研究下Struts的上传功能,没想到搞了两个小时才搞 ...
相关推荐
转换`java.util.Date`到`java.sql.Date`非常简单,只需要调用`java.sql.Date`的构造器,并传递`java.util.Date`对象的时间戳即可。 ```java java.util.Date utilDate = new java.util.Date(); java.sql.Date sql...
### Java.util.Date与Java.sql.Date相互转换 #### 知识点概述 在Java开发中,经常需要处理日期和时间相关的操作。Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但...
Date和Time API的改进(位于`java.time`包下)取代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、线程安全且易于使用的日期和时间处理功能。 Nashorn JavaScript引擎则让Java应用可以直接执行...
4. **日期和时间API的改进**:JDK8引入了新的`java.time`包,替换原有的`java.util.Date`和`java.util.Calendar`,提供了更加友好和易用的日期和时间API。 5. **接口的默认方法**:接口现在可以定义默认方法,这些...
5. **日期和时间API**:Java 8引入了全新的java.time包,提供了更好的日期和时间处理功能,取代了过时的java.util.Date和java.util.Calendar。 6. **类型注解**:增强了类型系统的元数据能力,允许在类型系统中添加...
日期和时间API的改进则消除了对`java.util.Date`和`java.util.Calendar`类的依赖,提供了更直观的日期和时间操作。 在Linux环境中,JDK的使用还包括配置Tomcat、Eclipse等Java应用服务器和IDE,以及进行Java项目的...
4. **Date和Time API的改进**:提供了新的`java.time`包,替代了旧的`java.util.Date`和`java.util.Calendar`,提供了更好的日期和时间操作。 5. **Optional类**:用于处理可能为空的对象,防止空指针异常。 **在...
5. **日期与时间API**:`java.time`包替代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、易用且功能丰富的日期和时间API,如`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`等。...
- `java.sql.Date` 是 `java.util.Date` 的子类,可以通过`new java.sql.Date(java.util.Date.getTime())`进行转换。 **转换方法**: - **从 `java.util.Date` 转换为 `java.sql.Date`**: ```java java.util....
- Date/Time API的增强:引入了新的java.time包,替代了过时的java.util.Date和java.util.Calendar,提供了更强大且易用的日期和时间处理功能。 为了在系统中使用这个JDK,还需要配置环境变量。在.bashrc或.bash_...
- **Date和Time API的改进**:移除了旧的`java.util.Date`和`java.util.Calendar`,引入了新的`java.time`包,提供更强大、更易用的时间日期处理功能。 - **方法引用来替代匿名内部类**:可以引用一个方法的签名,...
5. **日期与时间API**:JDK 8用`java.time`包替代了过时的`java.util.Date`和`java.util.Calendar`,提供了`LocalDate`,`LocalTime`,`LocalDateTime`,`ZonedDateTime`等更易用的类,以及`Duration`和`Period`用于...
在日期和时间API上,Java 8用`java.time`包替换了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、更易用的API,如`LocalDate`、`LocalTime`和`LocalDateTime`,以及`Duration`和`Period`等。...
- **Date和Time API**:全新的`java.time`包,替代了旧的`java.util.Date`和`java.util.Calendar`,提供了更强大和易用的时间日期处理功能。 - **默认方法**:允许在接口中定义默认实现,增强了接口的功能性。 - **...
5. **日期和时间API**:`java.time`包取代了旧的`java.util.Date`和`java.util.Calendar`,提供了更强大、更易用的时间日期操作。 6. **类型推断**:编译器可以自动推断局部变量的类型,简化代码编写。 7. **重复...
5. **Date和Time API的改进**:Java 8提供了新的日期和时间API,以替换过时的java.util.Date和java.util.Calendar,提高了日期和时间处理的易用性和灵活性。 6. **新的 Nashorn JavaScript引擎**:允许在Java应用中...
4. **Date and Time API (JSR 310)**: 提供了新的日期和时间类,替代了不完善的`java.util.Date`和`java.util.Calendar`。 5. **默认方法**: 接口中可以定义带实现的方法,增强了接口的灵活性。 6. **Optional 类**:...
- **Date and Time API (JSR 310)**:提供了全新的日期时间API,比旧的`java.util.Date`和`java.util.Calendar`更强大,更易于使用。 - **接口默认方法**:接口中可以定义默认方法,为接口添加实现,而无需创建新的...
此外,还引入了新的日期和时间API,提供了更强大和易于使用的日期处理功能,替代了原有的java.util.Date和Calendar类。 JDK 1.8的另一个关键特性是方法引用来代替匿名内部类,这使得代码更简洁,提高了可读性。还有...
赠送jar包:jetty-util-9.4.43.v20210629.jar; 赠送原API文档:jetty-util-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-util-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-util-9.4.43.v...