采用JSP+Servlet+JavaBean+JDBC方式开发一个web登录程序

2022年8月6日13:17:45

采用JSP+Servlet+JavaBean+JDBC方式开发一个web登录程序


1.选用开发环境:SQL Server 、JDK1.8、Tomcat7.0、Myeclipse 2014

2.开发模式及工作原理:

        首先,Servlet接收浏览器发送的请求,Servlet根据不同的Servlet调用相应的Javabean,然后JavaBean按照自己的业务逻辑 ,通过JDBC操作数据库。Servlet将数据库传递给JSP,最后,JSP将后台处理的结果呈现给浏览器。如图1.1所示:

                                                            图1.1       Servlet模式工作原理

3.建立数据库与表,创建数据库连接:

(1)创建数据库:在SQL Server 2014 中创建数据库,命名TEST,其中建立userTable 表(用户表),表结构如表1.1所示:

表1.1 userTable 表
字段名称 数据类型 主键 自增 允许为空 描述
id int yes 增1 ID号
username varchar(20) 用户名
password varchar(20) 密码
  • id设为自增int型,主键
  • 表建好后,插入几条记录
  • 效果图如图1.2所示:

                                                             图1.2 数据库表及数据效果图

     (2)创建数据库连接:

  • 加载JDBC驱动包:sqljdbc4.jar,可从网上下载并保存在Myeclipse 2014默认工作区“C:\User\join\Workspaces\MyeElipse professional 2014,同时,将JDBC驱动包sqljdbc4.jar复制到项目"\WebRoot\WEB-INF\lib"目录下。
  • 创建数据源连接:主菜单【Window】,选择【Open Perspective】,【MyEclipse Database Explorer】,打开“数据库浏览器”模式,右击鼠标选择【New...】,编辑数据库驱动如图1.3,其中Driver JARs 即先前存盘的数据库驱动。右击创建的sqlsrv,选择菜单【Open connection...】测试

                图1.3 编辑数据库连接驱动

4.详细开发步骤

(1)创建Java EE项目:选择主菜单【File】\rightarrow【New】\rightarrow【Web Project】,在【New Web Project】窗口中填写项目名jsp_servlet_javabean_jdbc,单击【Next】,在“Web Module"页勾选"Generate web.xml deployment descriptor",可自动生成web.xml配置文件。单击【Next】,勾选"JavaEE 7.0 Generic Library",取消选择''JSTL 1.2.2 Library(除去不必要的类库)。设置完成后,单击【Finish】,生成一个Java EE 项目。

(2)创建JDBC类:右击项目src,选择【New】\rightarrow【Package】,输入包名"org.easybooks.test.jdbc",单击【Finish】按钮。

右击src,选择【New】\rightarrow【Class】,指定"org.easybooks.test.jdbc"包,输入类名"SqlSrvDBConn"。

SqlSrvDBConn.java代码如下:

package org.easybooks.test.jdbc;
import java.sql.*;
public class SqlSrvDBConn {
	private Statement stmt;
	private Connection conn;
	ResultSet rs;
	public SqlSrvDBConn(){
		stmt=null;
		try{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			
			conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=TEST","sa","sa");
			
		}catch(Exception e){
			e.printStackTrace();
		}
		rs=null;
	}
	//执行查询类语句,又返回集
	public ResultSet executeQuery(String sql)
	{
		try{
			stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					                                          ResultSet.CONCUR_UPDATABLE);
				rs=stmt.executeQuery(sql);
			}catch(SQLException e){
				System.err.println("Data.executeQuery:"+e.getMessage());
			}
		return rs;
	}
	//关闭对象
	public void closeStmt()
	{
		try{
			stmt.close();    //关闭Statement对象
		}catch(SQLException e){
			System.err.println("Data.executeQuery:"+e.getMessage());
		}
	}
	public void closeConn()
	{
		try{
			conn.close();     //关闭连接
		}catch(SQLException e){
			System.err.println("Data.executeQuery:"+e.getMessage());
		}
	}
}

(3)构造JavaBean:在src下建立包org.easybooks.test.model.vo,其中创建名为UserTable的类,为userTable表构造一个JavaBean,代码如下:

package org.easybooks.test.model.vo;

public class UserTable {
	private Integer id;
	private String username;
	private String password;
	public Integer getId() {
		return this.id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return this.username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return this.password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

(4)编写JSP:

展开项目工程树,右击"WebRoot",选择【New】\rightarrow【File】,在File name中输入文件名login.jsp,单击【Finish】。在代码编辑器中编写登录页login.jsp文件。代码如下:

<%@ page language="java" pageEncoding="utf-8"%>
<html>
<head><title>登录</title></head>
<body bgcolor="#E3E3E3">
<form action="mainServlet" method="post">
<table>
  <caption>用户登录:</caption>
  <tr>
    <td>用户名:</td>
    <td>
      <input type="text" name="username" size="20"/>
    </td>
  </tr>
  <tr>
   <td>密码:</td>
   <td>
     <input type="password" name="password" size="21"/>
   </td>
  </tr>
</table>
<input type="submit" value="登录"/>
<input type="reset"  value="重置"/>
</form>
如果没注册单击<a href="">这里</a>注册!
</body>
</html>

此页面用于登录首页。同样方法在WebRoot下创建主页main.jsp文件,代码如下:

<%@page language="java" pageEncoding="gb2312" import="org.easybooks.test.model.vo.UserTable"%>
<html>
<head>
	<title>留言板信息</title>
</head>
<body>
	<%
		UserTable user=(UserTable)session.getAttribute("user");
		String usr=user.getUsername();
		
		%>
		<%=usr%>,您好,欢迎登录留言板。
</body>
</html>

同样方法在WebRoot下创建主页error.jsp文件,代码如下:

<%@page language="java" pageEncoding="utf-8"%>
<html>
<head>
	<title>出错</title>
</head>
<body>
   	   登录失败!单击<a href="login.jsp">这里</a>返回
</body>
</html>

(5)编写Servlet:

在src下创建包org.easybooks.test.servlet,在包中创建名为MainServlet的类(Servlet类)。编写MainServlet.java 代码如下:

package org.easybooks.test.servlet;
import  java.sql.*;
import  java.io.*;
import  javax.servlet.*;
import  javax.servlet.http.*;
import  org.easybooks.test.jdbc.SqlSrvDBConn;
import  org.easybooks.test.model.vo.UserTable;;
public class MainServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,
	        IOException{
		request.setCharacterEncoding("gb2312");
		String  usr=request.getParameter("username");
		String  pwd=request.getParameter("password");
		boolean validated=false;
		SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();
		HttpSession session=request.getSession();
		UserTable user=null;
		user=(UserTable)session.getAttribute("user");
		if(user==null){
			String sql="select*from userTable";
			ResultSet rs=sqlsrvdb.executeQuery(sql);
			try{
				
			
			while(rs.next())
      		 {
       			if((rs.getString("username").trim().compareTo(usr)==0)
                			 &&(rs.getString("password").compareTo(pwd)==0))
        			 {
       					user=new UserTable();
       					user.setId(rs.getInt(1));
       					user.setUsername(rs.getString(2));
       					user.setPassword(rs.getString(3));
       					session.setAttribute("user",user);  //把user对象存储在会话中
       					validated=true;  //标识为true表示验证成功通过
          			 }
          	}
          rs.close();
	}catch(SQLException e){
		e.printStackTrace();
	}
			sqlsrvdb.closeStmt();
			sqlsrvdb.closeConn();
		}
		else{
			validated=true;
		}
		if(validated)
		{
			response.sendRedirect("main.jsp");
		}
		else{
			response.sendRedirect("error.jsp");
			
		}
	        }
	        public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,
	           IOException{
	        	doGet(request,response);
	        	
	        }
	
	
	
	
}

(6)配置Servlet:修改web.xml,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>jsp_servlet_javabean_jdbc</display-name>
  <welcome-file-list>
    	<welcome-file>index.html</welcome-file>
    	<welcome-file>index.htm</welcome-file>
   	 	<welcome-file>login.jsp</welcome-file>
    	<welcome-file>default.html</welcome-file>
    	<welcome-file>default.htm</welcome-file>
    	<welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   <servlet>
  		<servlet-name>mainServlet</servlet-name>
  		<servlet-class>org.easybooks.test.servlet.MainServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  		<servlet-name>mainServlet</servlet-name>
 		<url-pattern>/mainServlet</url-pattern>
  </servlet-mapping>
  
    <servlet>
  		<servlet-name>selectAll</servlet-name>
  		<servlet-class>org.easybooks.test.servlet.SelectAllServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  		<servlet-name>selectAll</servlet-name>
 		<url-pattern>/selectAll</url-pattern>
  </servlet-mapping>
</web-app>

5.部署和运行:

  • 项目最终形成树见下图1.4:

                               图1.4  项目jsp_servlet_javabean_jdbc最终形成树

                                                               图1.5  部署成功

  • 单击工具栏按钮,弹出图1.5对话框,选择项目jsp_servlet_javabean_jdbc,单击【Add】按钮,选择Tomcat7.0作为服务器(此程序使用内置Tomcat),单击【OK】,部署成功。
  • 启动Tomcat 7.0,在浏览器中输入“http://localhost:8080/jsp_servlet_javabean_jdbc/,显示登录页面(图1.6),输入用户名,密码,提交表单,转到主页(图1.7),若userTable表中不存在相对应的用户名,密码,则提交后跳转到出错页(图1.8)。

                                                          图1.6   登录页面

                                                            图1.7 成功登录页面

                                                                 图1.8 出错页

  • 作者:renascence_mcc
  • 原文链接:https://blog.csdn.net/renascence_mcc/article/details/84729003
    更新时间:2022年8月6日13:17:45 ,共 6868 字。