JSP+Servlet制作Java Web登錄功能的全流程解析
0.新建web項(xiàng)目
首先,在MyEclipse里新建java web項(xiàng)目,項(xiàng)目名為login。此時(shí),項(xiàng)目中包含一個(gè)src文件夾和一個(gè)WebRoot文件夾,以及Java Web自帶的JRE庫(kù)文件夾和J2EE庫(kù)文件夾。其中,在WebRoot文件夾下,包含了WEB-INF文件夾和一個(gè)index.jsp頁(yè)面文件。
接下來(lái),新建一個(gè)JSP頁(yè)面,命名為login.jsp。
項(xiàng)目文件的結(jié)構(gòu)如下:

1.設(shè)計(jì)login.jsp頁(yè)面
打開(kāi)login.jsp頁(yè)面后,修改第一行的代碼為pageEncoding="utf-8",防止頁(yè)面中文出現(xiàn)亂碼。接下來(lái)在body部分定義form表單,用于用戶輸入用戶名和密碼。頁(yè)面代碼如下:
<%@ 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>登陸頁(yè)面</title> </head> <body> <form action="login" method="post"> 用戶名:<input name="username" type="text" /><br/> 密碼:<input name="password" type="password" /><br/> <input type="submit" value="提交" /> </form> </body> </html>
2.新建servlet文件
接下來(lái),在MyEclipse中新建一個(gè)loginServlet.java,并定義在包文件夾a下(包名自己決定)。文件夾目錄如下:

雙擊,打開(kāi)loginServlet.java文件,在doPost方法內(nèi),通過(guò)request.getParameter()方法獲取login頁(yè)面的username和password,并通過(guò)response.sendRedirect()方法跳轉(zhuǎn)到index.jsp頁(yè)面。頁(yè)面代碼如下:
package a;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class loginServlet implements javax.servlet.Servlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String userName = request.getParameter("username");//取得用戶名
String password = request.getParameter("password");//取得密碼
response.sendRedirect("index.jsp");
}
public void destroy() {
}
public ServletConfig getServletConfig() {
return null;
}
public String getServletInfo() {
return null;
}
public void init(ServletConfig arg0) throws ServletException {
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
HttpServletRequest rq = (HttpServletRequest)request;
HttpServletResponse rs = (HttpServletResponse) response;
doPost(rq,rs);
}
}
3.配置servlet
打開(kāi)WEB-INF文件夾下的web.xml文件,通過(guò)設(shè)置這個(gè)網(wǎng)站的首頁(yè)為login.jsp。接下來(lái)配置servlet。頁(yè)面代碼如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>a.loginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app>
4.測(cè)試頁(yè)面
最后看看運(yùn)行效果,選擇運(yùn)行,選擇某個(gè)版本的tomcat啟動(dòng)。頁(yè)面效果如下:


5.配置數(shù)據(jù)源
(1)創(chuàng)建數(shù)據(jù)庫(kù)
打開(kāi)mysql數(shù)據(jù)庫(kù),新建數(shù)據(jù)庫(kù),此處命名為login數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中創(chuàng)建表login,并且設(shè)置username和password字段。數(shù)據(jù)庫(kù)的設(shè)計(jì)表如下:

上圖中的id作為主鍵,使得數(shù)據(jù)庫(kù)的表至少符合第二范式的要求,其中username和password字段是login表內(nèi)獨(dú)有的字段,因此此表符合第三范式的要求。
接下來(lái)在login表中填入數(shù)據(jù),此例的數(shù)據(jù)如下:

(2)連接數(shù)據(jù)庫(kù)
在MyEclipse中連接數(shù)據(jù)庫(kù),此處采用加載JDBC驅(qū)動(dòng)的方法連接數(shù)據(jù)庫(kù)。首先下載mysql的驅(qū)動(dòng),接下來(lái)需要導(dǎo)入mysql的jar包到我們的項(xiàng)目中來(lái),在包資源管理器中右鍵JRE系統(tǒng)庫(kù),選擇構(gòu)造路徑-配置構(gòu)建路徑選項(xiàng)卡,彈出的Java構(gòu)建路徑選項(xiàng)卡中,通過(guò)添加外部JAR(X)按鈕加載mysql.jar文件。
接下來(lái),在項(xiàng)目中新建DBUtil.java文件,用于連接mysql數(shù)據(jù)庫(kù)。此處略去連接數(shù)據(jù)庫(kù)的原理,DBUtil.java文件的源代碼如下,請(qǐng)更改源代碼中的數(shù)據(jù)庫(kù)名稱和連入mysql的用戶名密碼等信息:
package a;
import java.sql.*;
public class DBUtil {
boolean bInited = false;
//加載驅(qū)動(dòng)
public void initJDBC() throws ClassNotFoundException {
//加載MYSQL JDBC驅(qū)動(dòng)程序
Class.forName("com.mysql.jdbc.Driver");
bInited = true;
System.out.println("Success loading Mysql Driver!");
}
public Connection getConnection() throws ClassNotFoundException,
SQLException{
if(!bInited){
initJDBC();
}
//連接URL為 jdbc:mysql//服務(wù)器地址/數(shù)據(jù)庫(kù)名
//后面的2個(gè)參數(shù)分別是登陸用戶名和密碼
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/數(shù)據(jù)庫(kù)名","用戶名","密碼");
return conn;
}
public boolean loginSuccess(String userName,String password){
boolean returnValue = false;
String sql = "SELECT * FROM login";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
String userNameInDB = rs.getString("username");
String passwordInDB = rs.getString("password");
if(userNameInDB.equals(userName) &&
passwordInDB.equals(password)){
returnValue = true;
break;
}
}
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
return returnValue;
}
}
上文中l(wèi)oginSuccess()方法內(nèi),用于在數(shù)據(jù)庫(kù)中查找用戶名和密碼與傳入?yún)?shù)username、password匹配的情況。一旦找到,則返回true結(jié)果。
(3)修改Servlet業(yè)務(wù)邏輯
修改loginServlet.java文件的業(yè)務(wù)邏輯,在其中加入連接數(shù)據(jù)庫(kù)的語(yǔ)句。其中,主要的頁(yè)面跳轉(zhuǎn)邏輯寫(xiě)著了doPost()方法內(nèi),修改后的doPost()方法如下:
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String userName = request.getParameter("username");//取得用戶名
String password = request.getParameter("password");//取得密碼
DBUtil db = new DBUtil();//構(gòu)建數(shù)據(jù)庫(kù)對(duì)象
boolean canLogin = db.loginSuccess(userName, password);
if(canLogin){//根據(jù)登陸情況,跳轉(zhuǎn)頁(yè)面
response.sendRedirect("index.jsp");
}else{
response.sendRedirect("login.jsp");
}
}
(4)測(cè)試頁(yè)面
調(diào)試后的頁(yè)面效果如下:


- JavaWeb實(shí)現(xiàn)用戶登錄注冊(cè)功能實(shí)例代碼(基于Servlet+JSP+JavaBean模式)
- java中servlet實(shí)現(xiàn)登錄驗(yàn)證的方法
- JSP+Servlet+JavaBean實(shí)現(xiàn)登錄網(wǎng)頁(yè)實(shí)例詳解
- Servlet+JavaBean+JSP打造Java Web注冊(cè)與登錄功能
- JSP + Servlet實(shí)現(xiàn)生成登錄驗(yàn)證碼示例
- 在jsp中用bean和servlet聯(lián)合實(shí)現(xiàn)用戶注冊(cè)、登錄
- servlet實(shí)現(xiàn)用戶登錄小程序
- servlet+jsp實(shí)現(xiàn)過(guò)濾器 防止用戶未登錄訪問(wèn)
- 使用Java servlet實(shí)現(xiàn)自動(dòng)登錄退出功能
- Servlet簡(jiǎn)單實(shí)現(xiàn)登錄功能
相關(guān)文章
springMVC使用jsp:include嵌入頁(yè)面的兩種方法(推薦)
下面小編就為大家?guī)?lái)一篇springMVC使用jsp:include嵌入頁(yè)面的兩種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
Eclipse插件開(kāi)發(fā)之新手入門(mén)
Eclipse插件開(kāi)發(fā)之新手入門(mén)...2006-10-10
Windows下JSP開(kāi)發(fā)環(huán)境的配置
Windows下JSP開(kāi)發(fā)環(huán)境的配置...2006-10-10
jsp導(dǎo)出身份證到excel時(shí)候格式不對(duì)但以X結(jié)尾的卻可以
excel導(dǎo)出身份證的時(shí)候顯示有的對(duì)有的不對(duì),身份證以X結(jié)尾的可以,其它都顯示不正確,關(guān)于這個(gè)問(wèn)題的解決方法如下,需要的朋友可以參考下2014-10-10
jsp利用POI生成Excel并在頁(yè)面中導(dǎo)出的示例
本篇文章主要是介紹jsp利用POI生成Excel并在頁(yè)面中導(dǎo)出的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
JSP實(shí)現(xiàn)簡(jiǎn)單的用戶登錄并顯示出用戶信息的方法
這篇文章主要介紹了JSP實(shí)現(xiàn)簡(jiǎn)單的用戶登錄并顯示出用戶信息的方法,通過(guò)簡(jiǎn)單的登陸及登陸顯示頁(yè)面實(shí)現(xiàn)這一功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
jsp include文件時(shí)的一個(gè)亂碼解決方法
做網(wǎng)站程序,一般對(duì)session的驗(yàn)證都會(huì)放到一個(gè)include文件里,在這個(gè)文件里通常也會(huì)顯示一些驗(yàn)證結(jié)果的信息。2009-03-03
JAVA/JSP學(xué)習(xí)系列之六(MySQL翻頁(yè)例子)
JAVA/JSP學(xué)習(xí)系列之六(MySQL翻頁(yè)例子)...2006-10-10
詳解Spring Hibernate連接oracle數(shù)據(jù)庫(kù)的配置
這篇文章主要介紹了詳解Spring Hibernate連接oracle數(shù)據(jù)庫(kù)的配置的相關(guān)資料,需要的朋友可以參考下2017-06-06
動(dòng)態(tài)jsp頁(yè)面轉(zhuǎn)PDF輸出到頁(yè)面的實(shí)現(xiàn)方法
最近遇到了很多坑,今天小編抽點(diǎn)時(shí)間給大家介紹下動(dòng)態(tài)jsp頁(yè)面轉(zhuǎn)PDF輸出到頁(yè)面的實(shí)現(xiàn)方法,感興趣的朋友一起看看吧2016-10-10

