0.新建web項目
首先,在MyEclipse里新建java web項目,項目名為login。此時,項目中包含一個src文件夾和一個WebRoot文件夾,以及Java Web自帶的JRE庫文件夾和J2EE庫文件夾。其中,在WebRoot文件夾下,包含了WEB-INF文件夾和一個index.jsp頁面文件。
接下來,新建一個JSP頁面,命名為login.jsp。
項目文件的結構如下:
![](http://img.jbzj.com/file_images/article/201605/2016525171501569.jpg?2016425171517)
1.設計login.jsp頁面
打開login.jsp頁面后,修改第一行的代碼為pageEncoding="utf-8",防止頁面中文出現亂碼。接下來在body部分定義form表單,用于用戶輸入用戶名和密碼。頁面代碼如下:
%@ 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>
/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文件
接下來,在MyEclipse中新建一個loginServlet.java,并定義在包文件夾a下(包名自己決定)。文件夾目錄如下:
![](http://img.jbzj.com/file_images/article/201605/2016525171642557.jpg?2016425171649)
雙擊,打開loginServlet.java文件,在doPost方法內,通過request.getParameter()方法獲取login頁面的username和password,并通過response.sendRedirect()方法跳轉到index.jsp頁面。頁面代碼如下:
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
打開WEB-INF文件夾下的web.xml文件,通過設置這個網站的首頁為login.jsp。接下來配置servlet。頁面代碼如下:
?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.測試頁面
最后看看運行效果,選擇運行,選擇某個版本的tomcat啟動。頁面效果如下:
![](http://img.jbzj.com/file_images/article/201605/2016525171740590.jpg?2016425171758)
![](http://img.jbzj.com/file_images/article/201605/2016525171806832.jpg?2016425171813)
5.配置數據源
(1)創(chuàng)建數據庫
打開mysql數據庫,新建數據庫,此處命名為login數據庫,在數據庫中創(chuàng)建表login,并且設置username和password字段。數據庫的設計表如下:
![](http://img.jbzj.com/file_images/article/201605/2016525171824608.jpg?2016425171834)
上圖中的id作為主鍵,使得數據庫的表至少符合第二范式的要求,其中username和password字段是login表內獨有的字段,因此此表符合第三范式的要求。
接下來在login表中填入數據,此例的數據如下:
![](http://img.jbzj.com/file_images/article/201605/2016525172109682.jpg?2016425172119)
(2)連接數據庫
在MyEclipse中連接數據庫,此處采用加載JDBC驅動的方法連接數據庫。首先下載mysql的驅動,接下來需要導入mysql的jar包到我們的項目中來,在包資源管理器中右鍵JRE系統(tǒng)庫,選擇構造路徑-配置構建路徑選項卡,彈出的Java構建路徑選項卡中,通過添加外部JAR(X)按鈕加載mysql.jar文件。
接下來,在項目中新建DBUtil.java文件,用于連接mysql數據庫。此處略去連接數據庫的原理,DBUtil.java文件的源代碼如下,請更改源代碼中的數據庫名稱和連入mysql的用戶名密碼等信息:
package a;
import java.sql.*;
public class DBUtil {
boolean bInited = false;
//加載驅動
public void initJDBC() throws ClassNotFoundException {
//加載MYSQL JDBC驅動程序
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//服務器地址/數據庫名
//后面的2個參數分別是登陸用戶名和密碼
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/數據庫名","用戶名","密碼");
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()方法內,用于在數據庫中查找用戶名和密碼與傳入參數username、password匹配的情況。一旦找到,則返回true結果。
(3)修改Servlet業(yè)務邏輯
修改loginServlet.java文件的業(yè)務邏輯,在其中加入連接數據庫的語句。其中,主要的頁面跳轉邏輯寫著了doPost()方法內,修改后的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();//構建數據庫對象
boolean canLogin = db.loginSuccess(userName, password);
if(canLogin){//根據登陸情況,跳轉頁面
response.sendRedirect("index.jsp");
}else{
response.sendRedirect("login.jsp");
}
}
(4)測試頁面
調試后的頁面效果如下:
![](http://img.jbzj.com/file_images/article/201605/2016525171929132.jpg?2016425171937)
![](http://img.jbzj.com/file_images/article/201605/2016525172156822.jpg?201642517224)
您可能感興趣的文章:- JavaWeb實現用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)
- java中servlet實現登錄驗證的方法
- JSP+Servlet+JavaBean實現登錄網頁實例詳解
- Servlet+JavaBean+JSP打造Java Web注冊與登錄功能
- JSP + Servlet實現生成登錄驗證碼示例
- 在jsp中用bean和servlet聯合實現用戶注冊、登錄
- servlet實現用戶登錄小程序
- servlet+jsp實現過濾器 防止用戶未登錄訪問
- 使用Java servlet實現自動登錄退出功能
- Servlet簡單實現登錄功能