从入门到入土Java EE(八)——jsp,html,servlet连接SQL server数据库的登录注册界面

我现在准备使用eclipse和SQL server2008数据库去建立一个登录和注册界面的功能项目。

使用工具:eclipse,SQL server 2008

首先在Java EE中创建一个项目,我取名为requestvsresponse。在项目中创建一个名为Login.jsp的登录页面

代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录页面</title>
</head>
<script type="text/javascript">
	
</script>
<style>
	.margin{
		margin:20px 300px;
	}
	.textrange{
		width:200px;
	}
</style>

<body>
	<h1 class="margin">登录界面</h1>
    <form name="loginfrm" action="loginserv" method="post" class="margin">
	    <table>
		    <tr>
		       	<td>用户名:</td>
		       	<td><input type="text" name="username" class="textrange" class="textrange"></td>
		    </tr>
		    <tr>
		       	<td>密&nbsp;&nbsp;&nbsp;&nbsp;码:</td>
		       	<td><input type="password" name="password1" class="textrange"></td>
		    </tr>
	   </table>
	   <input name="button" type="submit"  value="登录" onclick=""><br><br>
	   <a href="register.jsp" style="text-decoration:none">没有账户,点击注册 </a>
    </form>
    
</body>
</html>

登录界面运行效果如下:

再创建一个注册界面,格式为jsp,命名为register.jsp

注册界面代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>注册界面</title>
</head>
<script type="text/javascript">
	function a(){		
		var text1=loginfrm.password1.value;
		var text2=loginfrm.password2.value;
		var text3=loginfrm.username.value;
		
		if(text1=="" || text2=="" || text3==""){
			alert("用户名或密码不能为空!");
			return false;//false:阻止提交表单
		}
		if(text1!=text2 && text1!="" && text2!=""){
			alert("密码不一致!");
			return false;//false:阻止提交表单
		}
		if(text1==text2 && text1!="" && text2!="" && text3!=""){
			alert("注册成功,跳转登录界面");
			//window.location.href='Login.jsp';
		}
	}
</script>
<style>
	.margin{
		margin:20px 300px;
	}
	.textrange{
		width:200px;
	}
</style>
<body>
	<h1 class="margin">注册界面</h1>
    <form name="loginfrm" action="loginserv.do" method="post" class="margin" onsubmit="return a()">
	    <table>
		    <tr>
		       	<td>用户名:</td>
		       	<td><input type="text" name="username" class="textrange"></td>
		    </tr>		    
		    <tr>
		       	<td>密&nbsp;&nbsp;&nbsp;&nbsp;码:</td>
		       	<td><input type="password" name="password1" class="textrange"></td>		       	
			<tr>
		       	<td>新密码:</td>
		       	<td><input type="password" name="password2" class="textrange"></td>		     
		    </tr>
	   </table>
	   <input name="button"  type="submit"  value="注册" >
    </form>
    
</body>
</html>

效果如下:

此时在Login.jsp登录界面中,因为JavaScript方法,点击“没有账户,点击注册”这句话能够跳转到注册界面

然后打开SQL server2008数据库,创建一个新的数据库,命名为:MyDatabase,通过新建查询在该数据库中新建一张表,命名为mytable,sql语句如下:

create mytable
(
    name char(8),
    passwd char(16)    

)

 建立好数据库表之后,我们需要在Java EE项目中加入jdbc,因为我使用的是SQL server 2008 ,所以jdbc的版本是41。将jdbc导入到WebContent的WEB-INF的lib中。可以直接在外面将其放入该文件夹下。

之后可以创建servlet项目了,作用是对数据库建立连接,我们先进行注册界面的servlet创建。

将servlet命名为ConnectRe,格式是.java文件。注意要将@WebServlet("/lConnectRe")改为@WebServlet("/loginserv.do"),自己的数据库账户和密码也需要进行修改。

代码如下:

package com.connect;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ConnectRe
 */
@WebServlet("/loginserv.do")
public class ConnectRe extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ConnectRe() {
        super();
        // TODO Auto-generated constructor stub
    }
    
      
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置编码
		response.setCharacterEncoding("UTF-8");
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		doPost(request,response);
			 
	   
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置编码
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setHeader("Content-type", "text/html;charset=utf-8");
		
		//获取参数
		String username = request.getParameter("username");
		String userpwd1 = request.getParameter("password1");
		String userpwd2 = request.getParameter("password2");
		
		try{ 

			PrintWriter pw=response.getWriter(); 
			//连接数据库 
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库连接"); 
			//得到连接 
			Connection ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=MyDatabase","sa","自己的密码");/*第20行*/ 
			System.out.println("连接数据库成功");
			//创建Statement 
			Statement sm=ct.createStatement(); 
			//得到结果集 
			//ResultSet rs=sm.executeQuery("select top 1 * from users"); 
			//if(rs.next()){ 
			//	pw.println("hf"); 
			//} 
			PreparedStatement ps = ct.prepareStatement("insert into mytable(name,passwd) values(?,?)");  //向数据库存入数据
			ps.setString(1, username);
			ps.setString(2, userpwd1);
			ps.execute();
			ps.close();
			ct.close();  //数据库关闭
			System.out.println("数据库关闭");
			request.getRequestDispatcher("/Login.jsp").forward(request, response);
		}catch (Exception ex){ 
			System.out.println("连接失败");
			ex.printStackTrace(); 
		}
		
		
		
					
	}

}

然后运行register.jsp,可以在注册界面中对信息进行注册,信息将传送至数据库之前创建的mytable表中。

数据库中已经有了你之前存储的数据了。

接下来就是登录界面的servlet,命名为Logincon(),同样注意要修改@WebServlet("/Logincon"),还有之后登录成功后要跳转的具体页面。

代码如下:

package com.connect;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置编码
		response.setCharacterEncoding("UTF-8");
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		doPost(request,response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置编码
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setHeader("Content-type", "text/html;charset=utf-8");
		
		//获取参数
		String username = request.getParameter("username");
		String userpwd1 = request.getParameter("password1");
		
		
		try{ 

			PrintWriter pw=response.getWriter(); 
			//连接数据库 
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库连接"); 
			//得到连接 
			Connection ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=MyDatabase","sa","数据库密码");/*第20行*/ 
			System.out.println("连接数据库成功");
			//创建Statement , 执行 SQL 查询
			Statement sm=ct.createStatement(); 
			//查询用户名的密码
			String sql;
            sql ="select count(*) from mytable where name='" + username + "' and passwd='"+userpwd1+"'";  
            // 执行查询        
         	ResultSet rs = sm.executeQuery(sql);
         	if(rs.next()) {
         		//用户存在
         		System.out.println("用户存在");
         		int dbpass = rs.getInt(1);
         		//System.out.println(dbpass);
     
                if(dbpass>0){
                	//用户合法
                	System.out.println("用户合法");
                	response.sendRedirect("登录成功要跳转的页面");
                	//request.getRequestDispatcher("/register.jsp").forward(request, response);
                }else {
                	//用户不合法
                	System.out.println("用户不合法");
                	pw.print("<script language='javascript'>alert('用户名或密码错误');window.location.href='Login.jsp';</script>");
                	//response.sendRedirect("Login.jsp");
                	//request.getRequestDispatcher("/Login.jsp").forward(request, response);
                }
         	}else {
         		System.out.println("用户不存在");
         		pw.print("<script language='javascript'>alert('用户名或密码错误');window.location.href='Login.jsp';</script>");
         		//response.sendRedirect("Login.jsp");
         		//request.getRequestDispatcher("/Login.jsp").forward(request, response);
         	}
         	

			ct.close();  //数据库关闭
			System.out.println("数据库关闭");
		//	request.getRequestDispatcher("/Login.jsp").forward(request, response);
		}catch (Exception ex){ 
			System.out.println("连接失败");
			ex.printStackTrace(); 
		}
		
	}

}

具体运行Login.jsp,输入刚刚注册的账户和密码,将会跳转到自己设定的页面中去。

如果登录错误将会跳出一个窗口,点击确定之后将会返回登录界面

猜你喜欢

转载自blog.csdn.net/qq_36171287/article/details/89642585