这里需要我们在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> 密 码: </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> 密 码: </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>
密 码:<jsp:getProperty property="regPassword" name="registerBean"/><br>
<hr size = "3px" color = "yellow" width = "96%" noshade/>
<a href = "Register.jsp">重新注册</a>
<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>
麻烦点个赞呗!!!!
小白也很辛苦滴!!!