4453998919基于mvc模式的用户注册登录系统设计.doc
基于MVC模式的用户注册登录系统设计 信息1102 3110803046 江秋林一、 WEB目录结构二、 创建数据库使用MySql建立一个数据库Welcome,并新建一个表member,用户的信息存入member表中。member表的详细结构设计如下:字段名数据类型长度允许空主键lognameVarchar50passwordVarchar50emailVarchar50三、 配置web.xml<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns:web=" <servlet> <servlet-name>hello</servlet-name> <servlet-class>mypackage.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/lookHello</url-pattern> </servlet-mapping> <servlet> <servlet-name>register</servlet-name> <servlet-class>mypackage.HandleRegister</servlet-class> </servlet> <servlet-mapping> <servlet-name>register</servlet-name> <url-pattern>/helpRegister</url-pattern> </servlet-mapping> <servlet> <servlet-name>login</servlet-name> <servlet-class>mypackage.HandleLogin</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/helpLogin</url-pattern> </servlet-mapping></web-app>四、注册模块MVC模式的结构 写入数据库 数据库(MySql)控制器(servlet类)HandleRegister.java视图(JSP页面)register.jspshow.jsp 提交注册信息 member表中 存入数据 模型(JavaBean类) Register.java 请求JSP显示数据1、 Model(JavaBean)Register.javapackage mypackage;public class Register String logname="",password="",email=""String backNews;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 getEmail() return email;public void setEmail(String email) this.email = email;public String getBackNews() return backNews;public void setBackNews(String backNews) this.backNews = backNews;2、 View(JSP页面) register.jsp<% page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN" "http:/www.w3.org/TR/html4/loose.dtd"><head><td><A href="register.jsp"><font size=2>用户注册</font></A></td><td><A href="login.jsp"><font size=2>用户登录</font></A></td></head><html><body bgcolor=cyan><font size=2><center><form action="helpRegister" name=form><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=text name="email">*</td></tr><tr><td><input type=submit name="g" value="提交">*</td></tr></table></form></center></font></body></html>运行结果如图:show.jsp<% page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%page import="mypackage.Register" %><jsp:useBean id="register" type="mypackage.Register" scope="request" /><head><td><A href="register.jsp"><font size=2>用户注册</font></A></td><td><A href="login.jsp"><font size=2>用户登录</font></A></td></head><html><body bgcolor=yellow><center><font size=4 color=blue><br><jsp:getProperty property="backNews" name="register"/></font><table><tr><td>注册的名称:</td><td><jsp:getProperty property="logname" name="register"/></td></tr><tr><td>注册的电子邮件:</td><td><jsp:getProperty property="email" name="register"/></td></tr></table></center></body></html>运行结果如图:3、 Controllor(servlet)HandleRegister.javapackage mypackage;import mypackage.Register;import java.sql.*;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HandleRegister extends HttpServlet public void init(ServletConfig config)throws ServletExceptionsuper.init(config);try Class.forName("com.mysql.jdbc.Driver");catch(Exception e)public String handleString(String s)trybyte bb=s.getBytes("ISO-8859-1"); s=new String(bb);catch(Exception ee)return s;public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOExceptionConnection conn;Statement sql;Register reg=new Register();request.setAttribute("register",reg);String logname=request.getParameter("logname");String password=request.getParameter("password");String email=request.getParameter("email");String url="jdbc:mysql:/localhost/Welcome"if(logname=null)logname=""if(password=null)password=""boolean isLD=true;for(int i=0;i<logname.length();i+)char c=logname.charAt(i);if(!(c<='z'&c>='a')|(c<='Z'&c>='A')|(c<'9'&c>'0')isLD=false;boolean boo=logname.length()>0&&password.length()>0&&isLD;String backNews=""tryconn=DriverManager.getConnection(url,"root","root");String insertCondition="INSERT INTO member VALUES('" +logname+ "','" +password+ "','" +email+ "')"sql=conn.createStatement();if(boo)int m=sql.executeUpdate(insertCondition);if(m!=0)backNews="注册成功!" reg.setBackNews(backNews);reg.setLogname(logname);reg.setPassword(handleString(password);reg.setEmail(handleString(email);elsebackNews="信息填写不完整或名字中有非法字符"reg.setBackNews(backNews);conn.close();catch(SQLException exp)backNews="该会员名已经被使用,请您更换名字"+exp;reg.setBackNews(backNews);RequestDispatcher dispatcher=request.getRequestDispatcher("show.jsp");dispatcher.forward(request,response);public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOExceptiondoPost(request,response);五、登录模块控制器(servlet类) HandleLogin.java数据库(MySql)MVC模式的结构 提交登录信息 查询记录 模型(JavaBean类) Login.java视图(JSP页面)login.jspshowSuccess.jsp 存放信息 反馈登录信息1、 Model(JavaBean)Login.javapackage mypackage;public class Login String logname,password,backNews=""boolean success=false;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 getBackNews() return backNews;public void setBackNews(String backNews) this.backNews = backNews;public boolean getSuccess() return success;2、 View(JSP页面)login.jsp<% page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN" "http:/www.w3.org/TR/html4/loose.dtd"><head><table><td><A href="register.jsp"><font size=2>用户注册</font></A></td><td><A href="login.jsp"><font size=2>用户登录</font></A></td></table></head><html><body bgcolor=cyan><font size=2><center><br><br><tr><th><h1>请您登录</h1></th></tr><form action="helpLogin" method="post"><table border=2><tr><td>登录名称:</td><td><input type=text name="logname"></td></tr><tr><td>输入密码:</td><td><input type=password name="password"></td></tr></table><br><br><tr><td><input type=submit name="g" value="提交"></td></tr></form></font></center></body></html>运行结果如图:showSuccess.jsp<% page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%page import="mypackage.Login" %><jsp:useBean id="login" type="mypackage.Login" scope="session" /><html><head><table><td><A href="register.jsp"><font size=2>用户注册</font></A></td><td><A href="login.jsp"><font size=2>用户登录</font></A></td></table></head><body bgcolor=yellow><center><font size=4 color=blue><br><jsp:getProperty property="backNews" name="login"/></font><br><br><% if(login.getSuccess()=true)%> <br>登录用户名称:<jsp:getProperty property="logname" name="login"/> <%else%> <br>登录用户名称:<jsp:getProperty property="logname" name="login"/> <br>登录用户密码:<jsp:getProperty property="password" name="login"/> <%></center><br><br><tr><img src="file:/E:eclipse workspacejiangWebContentview.jpg" width=600 height=300></tr><br><tr><bgsound src="E:eclipse workspacejiangWebContentmoonshine.wav" loop=-1></tr><object id="mPlayer1" width=600 height=300 classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6"><param name="URL" value="file:/E:eclipse workspacejiangWebContentmoonshine.wav"> <param name="rate" value="1"> <param name="balance" value="0"> <param name="currentPosition" value="0"> <param name="defaultFrame" value> <param name="playCount" value="100"> <param name="autoStart" value="1"> <param name="currentMarker" value="0"> <param name="invokeURLs" value="1"> <param name="baseURL" value> <param name="volume" value="100"> <param name="mute" value="0"> <param name="uiMode" value="full"> <param name="stretchToFit" value="0"> <param name="windowlessVideo" value="0"> <param name="enabled" value="1"> <param name="enableContextMenu" value="1"> <param name="fullScreen" value="0"> <param name="SAMIStyle" value> <param name="SAMILang" value> <param name="SAMIFilename" value> <param name="captioningID" value> <param name="enableErrorDialogs" value="0"> <param name="_cx" value="7779"> <param name="_cy" value="1693"> </object></body></html>运行结果如图:3、 Controllor(servlet)HandleLogin.javapackage mypackage;import mypackage.Login;import java.sql.*;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HandleLogin extends HttpServlet public void init(ServletConfig config)throws ServletExceptionsuper.init(config);try Class.forName("com.mysql.jdbc.Driver");catch(Exception e)public String handleString(String s)trybyte bb=s.getBytes("ISO-8859-1"); s=new String(bb);catch(Exception ee)return s;public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOExceptionConnection conn;Statement sql;Login loginBean=null;String backNews=""HttpSession session=request.getSession(true);tryloginBean=(Login)session.getAttribute("login");if(loginBean=null)loginBean=new Login();session.setAttribute("login", loginBean);catch(Exception ee)loginBean=new Login();session.setAttribute("login", loginBean);String logname=request.getParameter("logname"),password=request.getParameter("password");boolean ok=loginBean.getSuccess();logname=handleString(logname);password=handleString(password); if(ok=true&&logname.equals(loginBean.getLogname()backNews=logname+"已经登录了!"loginBean.setBackNews(backNews);elseString url="jdbc:mysql:/localhost/Welcome"boolean boo=(logname.length()>0)&&(password.length()>0);tryconn=DriverManager.getConnection(url,"root","root");String condition="select * from member where logname='" +logname+ "'and password='" +password+ "'"sql=conn.createStatement();if(boo)ResultSet rs=sql.executeQuery(condition);boolean m=rs.next();if(m=true)backNews="登录成功!" loginBean.setBackNews(backNews); loginBean.setLogname(logname); loginBean.setSuccess(true);elsebackNews="您输入的用户名不存在,或密码不般配" loginBean.setBackNews(backNews); loginBean.setLogname(logname); loginBean.setSuccess(false); loginBean.setPassword(password);elsebackNews="您输入的用户名不存在,或密码不般配" loginBean.setBackNews(backNews); loginBean.setLogname(logname); loginBean.setSuccess(false); loginBean.setPassword(password);conn.close();catch(SQLException exp)backNews=""+exp;loginBean.setBackNews(backNews);loginBean.setSuccess(false);RequestDispatcher dispatcher=request.getRequestDispatcher("showSuccess.jsp");dispatcher.forward(request,response); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOExceptiondoPost(request,response);六、查看后台数据库