欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaWeb登陸功能實(shí)現(xiàn)代碼

 更新時間:2020年06月28日 09:28:35   作者:Dreamlove  
這篇文章主要為大家詳細(xì)介紹了JavaWeb登陸功能實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaWeb登陸功能的方法,供大家參考,具體內(nèi)容如下

首先我們要JavaWeb登陸的基本流程:JSP頁面發(fā)送請求——>Servlet——>Servlet通過調(diào)用方法從數(shù)據(jù)庫中得到數(shù)據(jù)并將結(jié)果返回頁面。

我們先建立三個jsp頁面,包括login.jsp(登陸頁面)、index.jsp(顯示登陸成功后的信息)、error.jsp(登錄失敗的頁面),其中后兩個頁面的內(nèi)容可以隨意寫,而login.jsp頁面的主要內(nèi)容如下:

<form action="LoginServlet" method="post">
  用戶名:<input type="text" name="userName"/>
  密碼:<input type="password" name="password"/>
  <input type="submit" value="提交"/>
 </form>

在login.jsp文件的開頭我們需要將pageEncoding="ISO-8859-1"改為pageEncoding="utf-8"(同時不要忘記設(shè)置開發(fā)工具的編碼格式,不然jsp頁面會顯示亂碼)

根據(jù)用戶名和密碼兩個屬性我們建立相應(yīng)的實(shí)體類,并添加get和set方法,代碼如下:

public class User {
 private String userName;
 private String password;
 public String getUserName() {
 return userName;
 }
 public void setUserName(String userName) {
 this.userName = userName;
 }
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
}

而jsp頁面中的action=“LoginServlet”是指將請求發(fā)送到Servlet處理。接下來我們轉(zhuǎn)到Servlet來進(jìn)行處理:

import java.io.IOException;

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

import com.test.dao.UserDao;
//創(chuàng)建時為Servlet而不是Class,需要在web.xml中進(jìn)行配置,配置的代碼Myeclipse將自動生成
public class LoginServlet extends HttpServlet {
 //創(chuàng)建UserDao的對象,以便于查詢數(shù)據(jù)庫
 UserDao userDao=new UserDao();
 //以下doGet方法和doPost方法分別對應(yīng)form表單中的method="get"和method="post"
 public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 //利用getParameter方法獲取到前臺文本框中輸入的值,其中括號內(nèi)的內(nèi)容為<input/>標(biāo)簽中的name屬性
 String userName=request.getParameter("userName");
 String password=request.getParameter("password");
 //調(diào)用UserDao中的getSelect方法并獲取到返回值
 boolean flag=userDao.getSelect(userName, password);
 //若用戶名和密碼存在則轉(zhuǎn)發(fā)到index.jsp頁面,否則重定向到error.jsp頁面
 if (flag) {
  request.getRequestDispatcher("index.jsp").forward(request, response);
 }
 else
  response.sendRedirect("error.jsp");
 }

}

注釋 中已經(jīng)說的很明白了,就不再重復(fù)了,可以看看第26行和29行,其中26行是轉(zhuǎn)發(fā),29行是重定向,感興趣的小伙伴可以查查兩者的區(qū)別。剩下的一部分就是我們之前提到過的關(guān)于數(shù)據(jù)庫的查詢操作了,我們在23行進(jìn)行了調(diào)用,下面我們完成調(diào)用的方法:

package com.test.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UserDao {
 //連接數(shù)據(jù)庫的代碼
 public Connection getCon() {
 //數(shù)據(jù)庫連接名稱
 String username="root";
 //數(shù)據(jù)庫連接密碼
 String password="";
 String driver="com.mysql.jdbc.Driver";
 //其中test為數(shù)據(jù)庫名稱
 String url="jdbc:mysql://localhost:3306/test";
 Connection conn=null;
 try{
  Class.forName(driver);
  conn=(Connection) DriverManager.getConnection(url,username,password);
 }catch(Exception e){
  e.printStackTrace();
 }
 return conn;
 }
 //進(jìn)行查詢的方法,若含有滿足條件的數(shù)據(jù)則返回true
 public boolean getSelect(String userName,String password) { 
 boolean flag=false;
  String sql = "select * from user where userName='"+userName+"' and password='"+password+"'"; 
  Connection conn = getCon();
  PreparedStatement pst = null;
  try {
  pst = (PreparedStatement) conn.prepareStatement(sql);
  ResultSet rs = pst.executeQuery();
  if (rs.next()) {
   flag=true;
  }
  } catch (Exception e) {
  }
  return flag;
 }
}

在這個方法中我們首先連接數(shù)據(jù)庫,然后在查詢的方法中傳入從jsp頁面獲取到的userName和password,判斷數(shù)據(jù)庫中是否存在此用戶名和密碼的用戶,如果存在則返回true,否則返回false(不要忘記導(dǎo)入數(shù)據(jù)庫鏈接的包)。

至于數(shù)據(jù)庫中的字段則參照實(shí)體類User建立即可,即包含userName和password兩個屬性,如果數(shù)據(jù)庫鏈接還有問題的請參照之前的關(guān)于數(shù)據(jù)庫部分的隨筆。

最后看一下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">
 <servlet>
 <servlet-name>LoginServlet</servlet-name>
 <servlet-class>com.test.servlet.LoginServlet</servlet-class>
 </servlet>

 <servlet-mapping>
 <servlet-name>LoginServlet</servlet-name>
 <url-pattern>/LoginServlet</url-pattern>
 </servlet-mapping>
</web-app>

其中<servlet>中的<servlet-name>可以隨意寫,只需要保證上下兩部分相同即可。

然后是<servlet-class>是自己定義的Servlet的路徑(包含包名),最后是<url-pattern>,里面的內(nèi)容也可以隨意寫,但是jsp頁面中form表單的action屬性必須與此名稱相同(action中不包含"/")

最后我們需要將web項(xiàng)目發(fā)布到tomcat中然后在瀏覽器輸入:http://localhost:8080/項(xiàng)目名稱/login.jsp就可以進(jìn)行訪問并登陸了。

這只是一個簡單的應(yīng)用,目的是為了幫助各位小伙伴了解jsp+servlet開發(fā)的基本流程,當(dāng)然我們在實(shí)際開發(fā)的過程中會進(jìn)行更為精細(xì)的分割,包括接口,實(shí)現(xiàn)類等。

相關(guān)文章

  • Java字符串中指定部分反轉(zhuǎn)的三種方式

    Java字符串中指定部分反轉(zhuǎn)的三種方式

    一些面試官可能在面試Java基礎(chǔ)的時候,讓你說一下字符串反轉(zhuǎn),會手撕代碼,所以下面這篇文章主要給大家介紹了關(guān)于Java字符串中指定部分反轉(zhuǎn)的三種方式,需要的朋友可以參考下
    2022-01-01
  • Java中的代理模式詳解及實(shí)例代碼

    Java中的代理模式詳解及實(shí)例代碼

    這篇文章主要介紹了Java中的代理模式詳解及實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼,需要的朋友可以參考下
    2017-02-02
  • java 并發(fā)編程之共享變量的實(shí)現(xiàn)方法

    java 并發(fā)編程之共享變量的實(shí)現(xiàn)方法

    這篇文章主要介紹了java 并發(fā)編程之共享變量的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Javamail使用過程中常見問題解決方案

    Javamail使用過程中常見問題解決方案

    這篇文章主要介紹了Javamail使用過程中常見問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java簡單從文件讀取和輸出的實(shí)例

    Java簡單從文件讀取和輸出的實(shí)例

    下面小編就為大家?guī)硪黄狫ava簡單從文件讀取和輸出的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • JAVA偏向鎖的原理與實(shí)戰(zhàn)

    JAVA偏向鎖的原理與實(shí)戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了JAVA偏向鎖的原理與實(shí)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java數(shù)據(jù)庫連接池之c3p0簡介_動力節(jié)點(diǎn)Java學(xué)院整理

    Java數(shù)據(jù)庫連接池之c3p0簡介_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)庫連接池之c3p0簡介的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Springboot實(shí)現(xiàn)動態(tài)定時任務(wù)管理的示例代碼

    Springboot實(shí)現(xiàn)動態(tài)定時任務(wù)管理的示例代碼

    最近在做spring boot項(xiàng)目開發(fā)中,由于使用@EnableScheduling注解和@Scheduled注解來實(shí)現(xiàn)的定時任務(wù),只能靜態(tài)的創(chuàng)建定時任務(wù),不能動態(tài)修改、添加、刪除、啟/停任務(wù),下面通過本文給大家介紹Springboot實(shí)現(xiàn)動態(tài)定時任務(wù)管理的方法,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • Java客戶端利用Jedis操作redis緩存示例代碼

    Java客戶端利用Jedis操作redis緩存示例代碼

    Jedis是Redis官方推薦的用于訪問Java客戶端,下面這篇文章主要給大家介紹了關(guān)于Java客戶端利用Jedis操作redis緩存的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Java應(yīng)該在哪里判斷List是否為空

    Java應(yīng)該在哪里判斷List是否為空

    在Java中,我們常用List來存儲數(shù)據(jù),但是我們怎么判斷它是否成功帶來了我們需要的數(shù)據(jù)呢?下面這篇文章主要給大家介紹了關(guān)于Java應(yīng)該在哪里判斷List是否為空的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評論