MVC之登录与注册

这里需要我们在SQL Server中新建一个数据库和数据表
我这里的数据库名为test
存放用户信息的表为users
users表中只需有userName和password两列即可

首先来看一下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 'Login.jsp' starting page</title>   
	<meta charset = "utf-8" />
  </head>
  <body align = "center">
    <form action="LoginHandle" method = "post">
    	<table align = "center">
    		<tr>
    			<td>用户名:</td>
    			<td> <input type = "text" name = "loginName" size = "20" > </td>
    		</tr>
    		<tr>
    			<td>&nbsp;&nbsp;&nbsp;&nbsp;: </td>
    			<td> <input type = "password" name = "loginPassword" size = "20" maxlength = "18"> </td>
    		</tr>
    		<tr align = "center">
    			<td> <input type = "submit" value = "登录"/> </td>
    			<td> <font size = "2px" color = "red">没有账号?</font><a href = "Register.jsp">注册</a> </td>
    		</tr>
    	</table>
    </form>
  </body>
</html>

一、实现注册

i.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 charset = "utf-8"/>
  </head>
  
  <body align = "center">
    <form action="RegisterHandle" method = "post">
    	<table>
    		<tr>
    			<td>用户名:</td>
    			<td> <input type = "text" name = "regName" size = "20" maxlength = "6"> </td>
    		</tr>
    		<tr>
    			<td>&nbsp;&nbsp;&nbsp;&nbsp;: </td>
    			<td> <input type = "password" name = "regPassword" size = "20" maxlength = "18"> </td>
    		</tr>
    		<tr align = "center">
    			<td colspan = "2"> <input type = "submit" value = "提交注册"/> </td>
    		</tr>
    	</table>
    </form>
    <hr size = "3px" width = "98%" color = "blue" noshade />
    <a href = "Login.jsp">去登录</a>
  </body>
</html>

ii.JavaBean模型代码(RegisterBean.java)
主要用于存储数据
//RegisterBean.java
package mybean;
public class RegisterBean 
{
	private String regName;
	private String regPassword;
	private String backNews ;	
	public RegisterBean() 
	{
		// TODO Auto-generated constructor stub
	}
	public String getRegName() {
		return regName;
	}
	public void setRegName(String regName) {
		this.regName = regName;
	}
	public String getRegPassword() {
		return regPassword;
	}
	public void setRegPassword(String regPassword) {
		this.regPassword = regPassword;
	}
	public String getBackNews() {
		return backNews;
	}
	public void setBackNews(String backNews) {
		this.backNews = backNews;
	}
}
iii.Servlet控制器代码(RegisterHandle.java)
用于处理业务逻辑
//RegisterHandle.java
package myservlet;
import java.io.IOException;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import mybean.RegisterBean;
/**
 * Servlet implementation class RegisterHandle
 */
@WebServlet("/RegisterHandle")
public class RegisterHandle extends HttpServlet 
{
	private static final long serialVersionUID = 1L;   
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegisterHandle() 
    {
        super();
        // TODO Auto-generated constructor stub
    }
	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException 
	{
		super.init(config);
		//1.加载jdbc驱动程序
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		}
		catch( ClassNotFoundException e )
		{
			System.out.println("jdbc驱动加载失败:"+e);
		}
	}
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		//2.设置编码格式
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		//3.创建JavaBean对象
		RegisterBean registerBean = new RegisterBean();
		//4.将JavaBean对象registerBean存储到session中
		HttpSession session = request.getSession();
		session.setAttribute("registerBean", registerBean);
		
		//5.获取用户输入的用户信息
		String regName = request.getParameter("regName");
		String password = request.getParameter("regPassword");
		String backNews = "";
		if(regName == null || regName.length() == 0 )
		{
			backNews += "用户名不得为空";
		}
		if( password.length() < 6 )
		{
			backNews += "\n密码长度须大于6";
		}
		if( sex == null || sex.length() < 0 )
		{
			backNews += "\n性别不得为空";
		}
		try
		{
			Connection con ;
			PreparedStatement preSts;
			String conStr = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
			String user = "sa";    //登录数据库的用户名
			String pwd = "123456";   //登录数据库的密码
			//与数据库建立连接
			con = DriverManager.getConnection(conStr,user,pwd);
			String insertCondition = "insert into users values(?,?)";
			//创建数据库对象并进行预编译
			preSts = con.prepareStatement(insertCondition);
			boolean judge_info = regName.length() > 0 && password.length() >=6 && s ;
			//如果用户填写了数据,将数据插入到数据表中
			if(judge_info)
			{
				preSts.setString(1, regName);
				preSts.setString(2, password);				
				//数据库对象preSts调用executeUpdate()方法并方法成功的记录条数
				int count = preSts.executeUpdate();
				
				if( count != 0 )
				{
					registerBean.setRegName(regName);
					registerBean.setRegPassword(password);
					registerBean.setBackNews("注册成功");
				}	
			}
			else
			{
				backNews += "\n信息填写不完整或带有非法字符";
				registerBean.setBackNews(backNews);
			}
			con.close();
			preSts.close();
		}
		catch( SQLException e )
		{
			System.out.println("用户名已经被使用,用户注册失败:"+e);
		}
		request.getRequestDispatcher("ShowRegisterInfo.jsp").forward(request, response);   //页面跳转
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

iv.jsp页面(ShowRegisterInfo.jsp)
用于显示注册是否成功

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 这个JavaBean也就是RegisterHandle.java中的创建的session范围的那个registerBean,注意名字要一致-->
<jsp:useBean id="registerBean" class = "mybean.RegisterBean" scope = "session"></jsp:useBean>
<%
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 charset = "utf-8"/>
  </head>
  <body>
  	<font color = "red">
    <jsp:getProperty property="backNews" name="registerBean"/><br>
    </font>
    用户名:<jsp:getProperty property="regName" name="registerBean"/><br>&nbsp;&nbsp;&nbsp;&nbsp;:<jsp:getProperty property="regPassword" name="registerBean"/><br>
    <hr size = "3px" color = "yellow" width = "96%" noshade/>
    <a href = "Register.jsp">重新注册</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <a href = "Login.jsp">去登录</a>
  </body>
</html>

假装这是一条分割线,哈哈哈

二、实现登录
i.JavaBean模型(LoginBean.java)
用于保存数据的JavaBean

package mybean;
public class LoginBean 
{
	private String loginName ;
	private String loginPassword ;
	private String backNews ;
	private boolean success = false ;	
	public LoginBean() 
	{
		// TODO Auto-generated constructor stub
	}
	public String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getLoginPassword() {
		return loginPassword;
	}
	public void setLoginPassword(String loginPassword) {
		this.loginPassword = loginPassword;
	}
	public String getBackNews() {
		return backNews;
	}
	public void setBackNews(String backNews) {
		this.backNews = backNews;
	}
	public boolean isSuccess() {
		return success;
	}
	public void setSuccess(boolean success) {
		this.success = success;
	}	
}

ii.Servlet控制器(LoginServlet.java)
用于处理逻辑业务

package myservlet;

import java.io.IOException;
import java.sql.*;
import java.util.prefs.BackingStoreException;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import mybean.LoginBean;

/**
 * Servlet implementation class LoginHandle
 */
@WebServlet("/LoginHandle")
public class LoginHandle extends HttpServlet 
{
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginHandle() 
    {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException 
	{
		super.init(config);
		//加载jdbc驱动程序
		try
		{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("jdbc驱动程序加载成功");
		}
		catch( ClassNotFoundException e )
		{
			System.out.println("jdbc驱动程序加载失败:"+e);
		}
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		//设置编码格式
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");		
		//创建一个JavaBean对象
		LoginBean loginBean = new LoginBean();		
		//将javabean对象保存到session对象中
		HttpSession session = request.getSession();
		session.setAttribute("loginBean", loginBean);		
		//获取表单中填写的用户登录信息
		String loginName = request.getParameter("loginName");
		String loginPassword = request.getParameter("loginPassword");
		String backNews = "";
		
		if( loginName == null || loginName.length() < 0 )
		{
			backNews += "用户名不得为空";
		}
		if( loginPassword == null || loginPassword.length() < 6 )
		{
			backNews += "\n密码长度须大于6";			
		}		
		try
		{
			Connection con ;
			PreparedStatement preStmt ;
			ResultSet rs ;			
			String user = "sa";
			String pwd = "123456";
			String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";			
			//建立与数据库的连接
			con = DriverManager.getConnection(url,user,pwd);
			System.out.println("数据库连接成功");			
			String loginCondition = "select * from users where userName = ? and password = ? ";			
			//对条件查询进行预编译
			preStmt = con.prepareStatement(loginCondition);			
			//对loginCondition进行赋值并查询
			preStmt.setString(1, loginName);
			preStmt.setString(2, loginPassword);			
			rs = preStmt.executeQuery();			
			if( rs.next() )
			{
				loginBean.setLoginName(loginName);
				loginBean.setSuccess(true);
				loginBean.setBackNews("登录成功");
			}
			else
			{
				loginBean.setBackNews("用户名或密码错误");
				loginBean.setSuccess(false);
			}			
			request.getRequestDispatcher("ShowLoginInfo.jsp").forward(request, response);
		}
		catch( SQLException e )
		{
			System.out.println(""+e);
		}		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

iv.jsp页面(ShowLoginInfo.jsp)
用与显示登录是否成功

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="loginBean" class = "mybean.LoginBean" scope = "session"></jsp:useBean>
<%
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 charset = "utf-8"/>
  </head>  
  <body align = "center">
    <%
    	if( loginBean.isSuccess() == true )
    	{
    %>
    欢迎您:<font size = "20px" color = "red"> <jsp:getProperty property="loginName" name="loginBean"/> </font>
    <%		
    	}else{%>
    	<font  size = "20px" color = "yellow"> <jsp:getProperty property="backNews" name="loginBean"/> </font>
    <%
    }
     %>
     <hr size = "3px" width = "98%" color = "blue" noshade />
     <a href = "Login.jsp">重新登录</a>
  </body>
</html>

麻烦点个赞呗!!!!
小白也很辛苦滴!!!

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MVC(Model-View-Controller)是一种常用的软件架构模式,用于将应用程序的逻辑分离成三个不同的组件:模型(Model)、视图(View)和控制器(Controller)。下面是一个简单的MVC登录注册功能的实现方式: 1. 模型(Model):模型负责处理数据和业务逻辑。在登录注册功能中,模型负责验证用户输入的用户名和密码是否正确,并与数据库进行交互。 2. 视图(View):视图负责展示用户界面。在登录注册功能中,视图包括登录页面和注册页面,用户可以在这些页面中输入用户名和密码。 3. 控制器(Controller):控制器负责处理用户的请求和响应。在登录注册功能中,控制器接收用户提交的表单数据,并将其传递给模型进行验证。如果验证通过,控制器可以跳转到其他页面或执行其他操作。 具体实现步骤如下: 1. 创建一个用户模型(User Model),包含用户名和密码等属性,并实现验证方法。 2. 创建一个登录页面视图(Login View),包含用户名和密码的输入框以及登录按钮。 3. 创建一个注册页面视图(Register View),包含用户名、密码和确认密码的输入框以及注册按钮。 4. 创建一个控制器(Controller),处理用户的请求和响应。在控制器中,可以监听登录按钮和注册按钮的点击事件,并获取用户输入的用户名和密码。 5. 在控制器中,将获取到的用户名和密码传递给用户模型进行验证。如果验证通过,可以执行登录成功或注册成功的操作;如果验证失败,可以提示用户重新输入或显示错误信息。 6. 根据需要,可以在控制器中实现其他功能,比如跳转到其他页面、保存用户登录状态等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值