最近看老罗视频,做了一个简单的用户注册系统。用户通过网页(JSP)输入用户名、真名和密码,Servlet接收后通过JDBC将信息保存到MySQL中。虽然是个简单的不能再简单的东西,但麻雀虽小,五脏俱全,在此做一归纳和整理。下面先上源码:
一、index.jsp
它的运行结果如下:
二、点击上面的“点击注册”就跳转到了pass.jsp:
运行效果如下:
三、除上面两个jsp代码外,剩下的就是java代码了。先来看java代码的结构:
不得不说JavaWeb是一个绝好的理解MVC架构思想的载体,上述有四个包,每个包下面一个文件。在功能的划分上有条不紊。
1、com.product.jdbc.dbutil 这个包里是基于jdbc驱动的一个工具类JdbcUtils.java,代码已经贴出来了,参见
2、com.product.register.action所谓的action扮演了MVC里的C的角色,即Control层,里面放的是各种Servlet。接收来自V(View)---客户端页面jsp回传的数据,然后调M层,把数据存进去。RegisterAction.java的代码:
3.com.product.register.service 这里的service其实是一个接口,RegisterService.java代码:
4.既然有接口就一定有接口的实现者,实现者就是com.product.register.dao下的RegisterDao.java, 负责操纵数据库,将信息存到表里。
下图是输入一个用户的信息:
用Navicat打开数据库可以看到:
代码就完毕了,下面是开发要点:
1、关于中文乱码的问题,按老罗的视频一开始我的也乱码,经研究需要三个地方同时设置utf-8编码,第一是数据库里表的编码,第二是jsp的编码:pageEncoding="utf-8" 第三是在Servlet里同时设置response和request的编码,代码如下:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8"); 记住是缺一不可哦!!!
2、关于JSP往JSP页面的跳转很简单:
<a href="<%=path%>/pass.jsp">点击注册</a> 超链接里直接放要跳转jsp的相对路径即可。
3、JSP往Servlet跳转:
<a href="javascript:dosubmit();">
<img src="<%=path%>/images/ok_1.jpg" name="Image8" width="60" height="22" border="0"> </a>
也是用的href超链接,在地址里写"javascript:dosubmit();". 这就需要定义dosubmit()函数:
获得一个表单,然后根据input时的名字获取对应value,
<INPUT class=text2 maxLength=20 size=18 name="username" minLength="1">
4、上面可以看到jsp往servlet跳转过程中先经过javascript,接下来说白了是javascript往servlet跳转:
th.action="<%=path%>/servlet/RegisterAction"
th.submit();
5、Servlet往jsp跳转:
response.sendRedirect(path + "/index.jsp");这种方法浏览器地址发生变化,传参数可以再URL地址里或用session,不能使用request.setAttribute来传参数。另一种使用forward来传,详细参见这里:
6、纵观整个架构,RegisterAction是控制中枢,数据经jsp----javascript传到RegisterAction。在RegisterAction里创建了接口Service的实例RegisterDao,用Dao来存数据。
关于javaEE的各层分工,详见
7.因为要访问数据库,记得将mysql-connector-java-5.1.26-bin.jar拷贝到WebRoot文件夹下的WEB-INF/lib文件夹下。
另外在web.xml里要配对,jsp里用到了css。其他的细节看源码吧。
下载链接: