1.上学期,在学期结束之际,学校安排实训,做了一个小小的JSP会员管理系统,前面,介绍过登录模块的实现,今天,来介绍一下会员管理系统中的注册模块,此系统是使用JSP和Servlet技术,在加上JavaBean来实现的,是一个MVC模式来写的一个小系统,其中JavaBean的实例放在tom.bean包下,Servlet控制器代码放在tom.servlet包下,jsp页面放在WebRoot包下,其中在WEB_INF的lib目录下必须把连接数据库的驱动文件sqljdbc.jar包添加进去,接下来开始介绍注册功能的实现。、
2.当一个新会员注册时,该模块要求用户必须输入会员名和密码信息,否则不允许注册。用户注册后的信息被存入数据库里的member表下。此功能模块的模型JavaBean描述用户的注册信息,视图由两个jsp页面构成,一个jsp页面负责提交用户的注册信息到控制器,另一个jsp页面负责显示注册是否成功的信息,注册成功,显示一个注册成功的页面,注册不成功,要求重新进行注册。控制器Servlet负责将视图提交的信息写入数据库的member表中,并负责更新视图。
3.首先,我们新建用于输入注册信息的jsp页面,页面名称为register.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>会员注册页面</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> <div align="center"> <table width="536"> <tr> <td colspan="4"><div align="center"><strong><font size="+3" color="#FFCCCC">会员管理系统</font> </strong></div></td> </tr> <tr> <td width="173"><div align="center"><a href="register.jsp">会员注册</a></div></td> <td width="119"><div align="center"><a href="login.jsp">会员登录</a></div></td> <td width="112"><div align="center"><a href="uploadPic.jsp">上传照片</a></div></td> <td width="112"><div align="center"><a href="lookMember.jsp">浏览会员</a></div></td> </tr> <tr> <td><div align="center"><a href="updateRegister.jsp">修改注册信息</a></div></td> <td><div align="center"><a href="updatePwd.jsp">修改密码</a></div></td> <td><div align="center"><a href="exit">退出登录</a></div></td> <td><div align="center"><a href="index.jsp">返回主页</a></div></td> </tr> </table> </div> <center> <form action="register" method="post"> <br/>输入你的信息,会员名字必须由字母和数字组成,带*号项必须填写 <table> <tr><td>会员名称:</td><td><input type="text" name="logname"/>*</td></tr> <tr><td>设置密码:</td><td><input type="password" name="password"/>*</td></tr> <tr><td>确认密码:</td><td><input type="password" name="password1"/></td></tr> <tr><td>性别:</td><td><input name="sex" type="radio" checked="checked" align="middle" value="男"/>男 <input type="radio" name="sex" align="middle" value="女"/>女</td></tr> <tr><td>会员年龄:</td><td><input type="text" name="age"/></td></tr> <tr><td>电子邮件:</td><td><input type="text" name="email"/></td></tr> <tr><td>联系电话:</td><td><input type="text" name="phone"/></tr></td> </table> <table> <tr><td>输入你的个人简历:</td></tr> <tr><td><textarea name="message" rows="6" cols="30"></textarea></td></tr> <tr><td><input type="submit" name="g" value="提交"/></td></tr> </table> <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="200"> <param name="movie" value="flash/register.swf" /> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="6.0.65.0" /> <!-- 此 param 标签提示使用 Flash Player 6.0 r65 和更高版本的用户下载最新版本的 Flash Player。如果您不想让用户看到该提示,请将其删除。 --> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <!-- 下一个对象标签用于非 IE 浏览器。所以使用 IECC 将其从 IE 隐藏。 --> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="flash/register.swf" width="400" height="200"> <!--<![endif]--> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="6.0.65.0" /> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <!-- 浏览器将以下替代内容显示给使用 Flash Player 6.0 和更低版本的用户。 --> <div> <h4>此页面上的内容需要较新版本的 Adobe Flash Player。</h4> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="获取 Adobe Flash Player" /></a></p> </div> <!--[if !IE]>--> </object> <!--<![endif]--> </object> </form> </center> </body> </html>
页面效果如下:
然后根据我们数据表中定义的七个字段和表单输入的各项信息建立一个JavaBean模型,用来描述用户的注册信息,即在tom.bean包下新建一个Register.java文件,其中定义了7个变量,通过SetXxx()和getXxx()方法封装数据:
Registe.java文件,代码如下:
package tom.bean; public class Register { private String logname;// 声明会员名称变量 private String password;// 声明会员密码变量 private String sex;// 声明会员性别变量 private int age; // 声明会员年龄变量 private String email;// 声明电子邮件变量 private String phone;// 声明联系电话变量 private String message;// 声明个人简历变量 public String getLogname() { return logname; } public void setLogname(String logname) { this.logname = logname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
在register.jsp页面中通过表单提交到Servlet上,即:
<form action="register" method="post"></form>
所以我们必须新建一个Servlet控制器,即 RegisterMessage.java文件:
RegisterMessage.java文件代码如下:
package tom.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import tom.bean.Register; public class RegisterMessage extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { // 加载驱动 try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") .newInstance(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } super.init(config); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取表单传递过来的参数 request.setCharacterEncoding("utf-8"); String name = request.getParameter("logname"); String pwd = request.getParameter("password"); String pwd1 = request.getParameter("password1"); String s = request.getParameter("sex"); String a = request.getParameter("age"); String e = request.getParameter("email"); String p = request.getParameter("phone"); String m = request.getParameter("message"); if (name == null || name.equals("")) { showMessage("会员名称不能为空", response); } else if (pwd == null || pwd.equals("")) { showMessage("设置密码不能为空", response); } else if (!pwd.equals(pwd1)) { showMessage("两次输入密码不一致", response); } else { // 获取连接 try { String uri = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ComeHere"; String user = "xg"; String password = "123456"; Connection con = DriverManager.getConnection(uri, user, password); // 创建Statement对象,用于发送和执行SQL语句 Statement st = con.createStatement(); int age=0; if(!(a==null || a.equals(""))){ age=Integer.parseInt(a); } // 创建sql语句 String sql = "insert into member(logname,password,sex,age,phone,email,message) values ('"+name+"','"+pwd+"','"+s+"','"+age+"','"+p+"','"+e+"','"+m+"')"; // 执行sql语句,插入数据 int i = st.executeUpdate(sql); if(i!=0){ Register register=new Register();//获取Register对象 //设置相应的属性 register.setLogname(name); register.setPassword(pwd1); register.setSex(s); register.setAge(age); register.setPhone(p); register.setEmail(e); register.setMessage(m); /*将JavaBean写入request对象中*/ request.setAttribute("register", register); //注册成功,跳转重定向 RequestDispatcher dispatcher=request.getRequestDispatcher("registerMessage.jsp"); dispatcher.forward(request, response); }else{ showMessage("数据异常,请稍后重试",response); } } catch (Exception e1) { e1.printStackTrace(); } } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } private void showMessage(String message, HttpServletResponse response) throws IOException { // TODO Auto-generated method stub response.setContentType("text/html;charSet=GB2312"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println(message + ","); out.println("<a href='register.jsp'>继续注册</a>"); out.println("</body></html>"); } }
其中注册成功的话,就会转发到registerMessage.jsp这个视图上去,接下来附上registerMessage.jsp页面的代码,如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page import="tom.bean.Register"%> <% 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>注册后信息显示</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> <div align="center"> <table width="536"> <tr> <td colspan="4"><div align="center"><strong><font size="+3" color="#FFCCCC">会员管理系统</font> </strong></div></td> </tr> <tr> <td width="173"><div align="center"><a href="register.jsp">会员注册</a></div></td> <td width="119"><div align="center"><a href="login.jsp">会员登录</a></div></td> <td width="112"><div align="center"><a href="uploadPic.jsp">上传照片</a></div></td> <td width="112"><div align="center"><a href="lookMember.jsp">浏览会员</a></div></td> </tr> <tr> <td><div align="center"><a href="updateRegister.jsp">修改注册信息</a></div></td> <td><div align="center"><a href="updatePwd.jsp">修改密码</a></div></td> <td><div align="center"><a href="exit">退出登录</a></div></td> <td><div align="center"><a href="index.jsp">返回主页</a></div></td> </tr> </table> </div> <center> <jsp:useBean id="register" class="tom.bean.Register" scope="request"></jsp:useBean> <br/>注册成功 <table> <tr><td>注册的会员名称:</td><td><jsp:getProperty property="logname" name="register"/></td></tr> <tr><td>注册的性别:</td><td><jsp:getProperty property="sex" name="register"/></td></tr> <tr><td>注册的会员年龄:</td><td><jsp:getProperty property="age" name="register"/></td></tr> <tr><td>注册的电子邮件:</td><td><jsp:getProperty property="email" name="register"/></td></tr> <tr><td>注册的联系电话:</td><td><jsp:getProperty property="phone" name="register"/></td></tr> </table> <table> <tr><td>您输入的个人简介:</td></tr> <tr><td><textarea rows="6" cols="30"><jsp:getProperty property="message" name="register"/></textarea></td></tr> </table> </center> </body> </html>
其中action="register"中register是在浏览器的地址栏中所需要的,单击一个表单的提交按钮,访问Servlet,Servlet中必须在WEB_INF下的web.xml文件:其中要在web.xml文件中添加<servlet>标记和<servlet-mapping>标记,在这里我们可以这样配置Servlet:
<servlet> <servlet-name>register</servlet-name> <servlet-class>tom.servlet.RegisterMessage</servlet-class> </servlet> <servlet-mapping> <servlet-name>register</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping>
其中<servlet>标记下的:<servlet-name>子标记定义的是servlet的名字可以随便定义,最好是小写的,如果是两个单词合并,如Login和Message合并。应该写为loginMessage,最好有所规范, <servlet-class>子标记是你定义Servlet控制器Java文件的路径,为包名+类名,
其中<servlet-mapping>标记下的:<servlet-name>子标记必须和<servlet>标记下的<servlet-name>的名称相同,<url-pattern>子标记为"/register",那么用户在书写表单时的<form action="register" method="post">action值相同,但要加上个/,此时浏览器在点击表单里的提交按钮后便会访问这个Servlet了。
4.这样就可以实现注册的功能了,下面我就不截图给大家看效果了,大家可以参考我的源代码,源代码下载地址:http://download.csdn.net/download/u012561176/8483147
5.以上内容仅供大家学习参考,写得不好,请见谅,如有错误,请指出,谢谢!