⑤开发web层
5.1我们来先做注册的界面吧!
- 提供注册界面的Servlet
publicclassRegisterUIServletextendsjavax.servlet.http.HttpServlet{
protectedvoiddoPost(javax.servlet.http.HttpServletRequestrequest,javax.servlet.http.HttpServletResponseresponse)throwsjavax.servlet.ServletException,IOException{
//直接跳转到显示注册界面的JSP
request.getRequestDispatcher("/WEB-INF/register.jsp").forward(request,response);
}
protectedvoiddoGet(javax.servlet.http.HttpServletRequestrequest,javax.servlet.http.HttpServletResponseresponse)throwsjavax.servlet.ServletException,IOException{
this.doPost(request,response);
}
}
- 开发注册界面的JSP
<h1>欢迎来到注册界面!</h1>
<%--提交给处理注册的处理Servlet--%>
<formmethod="post"action="${pageContext.request.contextPath}/RegisterServlet">
<table>
<%--对于id来讲,是服务器分配的!不需要用户自己输入--%>
<tr>
<td>用户名</td>
<td>
<inputtype="text "name="username">
</td>
</tr>
<tr>
<td>密码</td>
<td>
<inputtype="text"name="password">
</td>
</tr>
<tr>
<td>确认密码</td>
<td>
<inputtype="text"name="password">
</td>
</tr>
<tr>
<td>邮箱</td>
<td>
<inputtype="text"name="email">
</td>
</tr>
<tr>
<td>生日</td>
<td>
<inputtype="text "name="birethday">
</td>
</tr>
<tr>
<td>
<inputtype="submit"value="提交">
</td>
<td>
<inputtype="reset"value="重置!">
</td>
</tr>
</table>
</form>
- JSP页面是这样子的
- 接下来,我们要开发处理用户注册提交的Servlet
//首先要接受Parameter的参数,封装到User里面去
Stringusername=request.getParameter("username");
Stringpassword=request.getParameter("password");
//......如果参数过多,我们就要写好多好多类似的代码了...
- 此时,我们应该想起反射机制中的BeanUtils开发包..为了更好地重用,我就将它写成一个工具类!
/*
* 将Parameter参数的数据封装到Bean中,为了外边不用强转,这里就使用泛型了!
*
* @request 由于要获取的是Parameter参数的信息,所以需要有request对象
* @tClass 本身是不知道封装什么对象的,所以用class
*
* */
publicstatic<T>Trequest2Bean(HttpServletRequesthttpServletRequest,Class<T>tClass){
try{
//创建tClass的对象
Tbean=tClass.newInstance();
//获取得到Parameter中全部的参数的名字
Enumerationenumeration=httpServletRequest.getParameterNames();
//遍历上边获取得到的集合
while(enumeration.hasMoreElements()){
//获取得到每一个带过来参数的名字
Stringname=(String)enumeration.nextElement();
//获取得到值
Stringvalue=httpServletRequest.getParameter(name);
//把数据封装到Bean对象中
BeanUtils.setProperty(bean,name,value);
}
returnbean;
}catch(Exceptione){
e.printStackTrace();
thrownewRuntimeException("封装数据到Bean对象中出错了!");
}
}
- 经过我们测试,日期不能直接封装到Bean对象中,会直接报出异常!