demo.jsp
<%@ 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 'demo.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="/day10-jsp/AServlet" method="post" >
用户名:<input type="text" name="name" /><br>
密码:<input type="password" name="password" /><br>
年龄:<input type="text" name="age" /><br>
入职日期:<input type="text" name="hiredate" /><br>
<input type="submit" value="登录" />
</form>
</body>
</html>
User.java
package cn.itcast.a_beanutils;
import java.util.Date;
//javaBean
//1.要求为属性提供get/set方法任意之一
//2.需要有空参构造
//3.实现串行化接口(可选)
public class User {
private String name;
private String password;
private int age;
private Date hiredate;
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [name=" + name + ", password=" + password + ", age=" + age
+ ", hiredate=" + hiredate + "]";
}
}
AServlet.java
package cn.itcast.a_beanutils;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
public class AServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 创建User对象
User u = new User();
// 将表单参数封装到User对象
//参数1: 填写User对象
//参数2: 填写需要封装到User对象的参数Map
try {
//如果我们需要BeanUtils支持非8大基本数据类型.我们只要给BeanUtils添加类型转换器即可
//注意:注册类型转换器,必须写在populate方法之前.
ConvertUtils.register(new MyDateConverter(), Date.class);
//BeanUtils在封装时可以完成类型转换. 自动转换的范围 只限于 8个基本数据类型
BeanUtils.populate(u,request.getParameterMap());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
System.out.println(u);
/* //1 获得参数
String name = request.getParameter("name");
String password = request.getParameter("password");
//2 封装参数 User
User u = new User();
u.setName(name);
u.setPassword(password);*/
//-------------------------------------------------------
//3 将User对象交给业务类处理
//4 根据处理结果
//成功=>在session加入成功标识,并重定向到成功页面
//失败=>回到登录页面.提示错误信息
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
MyDateConverter.java
package cn.itcast.a_beanutils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
public class MyDateConverter implements Converter {
//我们填写转换代码
//参数1: 没用, 告诉实现者,需要转换成什么类型
//参数2: 待转换表单参数
//返回值: 转换结果
public Object convert(Class arg0, Object arg1) {
//1 创建sdf
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
//2 转换参数2
String dateStr = arg1.toString();
try {
Date date = sdf.parse(dateStr);
//3 将转换结果返回
return date;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
}
用户登录注册的工具包: http://download.csdn.net/detail/panpan_1994/9632146