JSP+Servlet製作Java Web登入功能的全流程解析_JSP編程

來源:互聯網
上載者:User

0.建立web項目
首先,在MyEclipse裡建立java web項目,項目名為login。此時,項目中包含一個src檔案夾和一個WebRoot檔案夾,以及Java Web內建的JRE庫檔案夾和J2EE庫檔案夾。其中,在WebRoot檔案夾下,包含了WEB-INF檔案夾和一個index.jsp分頁檔。
接下來,建立一個JSP頁面,命名為login.jsp。
專案檔的結構如下:

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下(包名自己決定)。檔案夾目錄如下:

雙擊,開啟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啟動。頁面效果如下:

5.配置資料來源
(1)建立資料庫
開啟mysql資料庫,建立資料庫,此處命名為login資料庫,在資料庫中建立表login,並且設定username和password欄位。資料庫的設計表如下:

上圖中的id作為主鍵,使得資料庫的表至少符合第二範式的要求,其中username和password欄位是login表內專屬的欄位,因此此表符合第三範式的要求。
接下來在login表中填入資料,此例的資料如下:

(2)串連資料庫
在MyEclipse中串連資料庫,此處採用載入JDBC驅動的方法串連資料庫。首先下載mysql的驅動,接下來需要匯入mysql的jar包到我們的項目中來,在包資源管理員中右鍵JRE系統庫,選擇構造路徑-配置構建路徑選項卡,彈出的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; }}

  上文中loginSuccess()方法內,用於在資料庫中尋找使用者名稱和密碼與傳入參數username、password匹配的情況。一旦找到,則返回true結果。

(3)修改Servlet商務邏輯
修改loginServlet.java檔案的商務邏輯,在其中加入串連資料庫的語句。其中,主要的頁面跳轉邏輯寫著了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)測試頁面
調試後的頁面效果如下:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.