1. 程式人生 > 程式設計 >Jsp+Servlet實現簡單登入註冊查詢

Jsp+Servlet實現簡單登入註冊查詢

本文例項為大家分享了Jsp+Servlet實現簡單登入註冊查詢的具體程式碼,供大家參考,具體內容如下

1、註冊功能:

製作一個註冊頁面
使用者輸入:

使用者名稱
密碼
年齡
註冊成功:——>跳轉至登入頁面進行登入
註冊失敗:——>文字或其他形式的提示皆可

2、簡易查詢:

製作一個查詢頁面
輸入使用者名稱
顯示該使用者的使用者名稱、密碼、年齡

演示

1.啟動進入登陸頁面

Jsp+Servlet實現簡單登入註冊查詢

2.點選註冊,進入註冊頁面,成功跳轉到登入頁面

Jsp+Servlet實現簡單登入註冊查詢

失敗則提示

Jsp+Servlet實現簡單登入註冊查詢

回到登入頁面,登入成功進入查詢頁面

Jsp+Servlet實現簡單登入註冊查詢

登入失敗顯示提示資訊

Jsp+Servlet實現簡單登入註冊查詢

輸入使用者名稱->顯示該使用者的使用者名稱、密碼、年齡

Jsp+Servlet實現簡單登入註冊查詢

程式碼

Jsp+Servlet實現簡單登入註冊查詢

dao

public class UserDao {
 private Connection conn = null;
 private PreparedStatement ps=null;
 private int result=0;
 private ResultSet rs=null;

 //使用者註冊
 public int register(User user){
  String sql="insert into users(name,password,age) value (?,?,?)";
  try {
   //獲取資料庫連線物件
   conn= JDBCUtil.getConnection();
   //獲取資料庫操作物件
   ps=conn.prepareStatement(sql);
   ps.setString(1,user.getName());
   ps.setString(2,user.getPassword());
   ps.setInt(3,user.getAge());
   //執行sql
   result=ps.executeUpdate();
  } catch (Exception e) {
   e.printStackTrace();
  }finally {
   JDBCUtil.close(null,ps,conn);
  }
  return result;
 }

 //登入驗證使用者資訊
 public int login(String userName,String password){
  String sql ="select count(*) from users where name=? and password=?";
  try {
   conn=JDBCUtil.getConnection();
   ps=conn.prepareStatement(sql);
   ps.setString(1,userName);
   ps.setString(2,password);
   rs=ps.executeQuery();
   while (rs.next()){
    result=rs.getInt("count(*)");
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   JDBCUtil.close(rs,conn);
  }
  return result;
 }

 //根據使用者名稱 顯示使用者名稱、密碼、年齡
 public User findByName(String userName){
  String sql="select name,age from users where name=?";
  User user = null;
  try {
   conn=JDBCUtil.getConnection();
   ps=conn.prepareStatement(sql);
   ps.setString(1,userName);
   rs=ps.executeQuery();
   while (rs.next()){
    String name = rs.getString("name");
    String password = rs.getString("password");
    int age = rs.getInt("age");
    user = new User(name,age);
   }

  } catch (Exception e) {
   e.printStackTrace();
  }finally {
   JDBCUtil.close(null,conn);
  }
  return user;
 }
}

entity 實體類

public class User {
 private int id;
 private String name;
 private String password;
 private int age;
//set...
//get...
//constructor...
}

service

public class UserServiceImpl implements UserService {
 UserDao userDao = new UserDao();
 // 註冊
 @Override
 public int register(User user) {
  return userDao.register(user);
 }
 // 登陸
 @Override
 public int login(String userName,String password) {
  return userDao.login(userName,password);
 }

 // 根據使用者名稱查詢資訊
 @Override
 public User findByName(String userName) {
  return userDao.findByName(userName);
 }
}

servlet

// FindByNameServlet
public class FindByNameServlet extends HttpServlet {
 protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
  String name = request.getParameter("name");

  UserService userService = new UserServiceImpl();
  User user = userService.findByName(name);

  //將查詢結果放入request作用域
  request.setAttribute("userInfo",user);
  request.getRequestDispatcher("/jsp/index.jsp").forward(request,response);
 }
}

// LoginServlet
public class LoginServlet extends HttpServlet {
 protected void doPost(HttpServletRequest request,IOException {
  //1 獲取
  String userName = request.getParameter("userName");
  String password = request.getParameter("password");

  //2 service呼叫dao對資料庫操作
  UserService userService = new UserServiceImpl();
  int result = userService.login(userName,password);

  //3 成功跳轉到查詢頁面,失敗跳轉到失敗頁面
  if (result>0){
   response.sendRedirect("/jsp/index.jsp");
  }else{
   response.sendRedirect("/login_error.html");
  }
 }
}
// RegisterServlet
public class RegisterServlet extends HttpServlet {
 protected void doPost(HttpServletRequest request,IOException {
  UserService userService = new UserServiceImpl();
  User user = null;
  int result = 0;
  //1【呼叫請求物件】讀取【請求頭】引數資訊,得到使用者註冊資訊
  String userName,age;
  userName = request.getParameter("userName");
  password = request.getParameter("password");
  age = request.getParameter("age");
  user = new User(userName,Integer.valueOf(age));
  //2 呼叫userService——>userDao
  // 先查詢使用者是否存在
  User byName = userService.findByName(userName);
  if (byName!=null){
   request.setAttribute("info","使用者已存在!");
   request.getRequestDispatcher("/jsp/register.jsp").forward(request,response);
  }
  // 註冊
  result = userService.register(user);

  //3 設定編碼格式,防止亂碼
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();

  //註冊成功:——>跳轉至登入頁面進行登入
  //註冊失敗:——>註冊頁面提示:註冊失敗
  if (result == 1) {
   response.sendRedirect("/login.html");
  } else {
   request.setAttribute("info","註冊失敗!");
   request.getRequestDispatcher("/jsp/register.jsp").forward(request,response);
  }
 }
}

JDBCUtil

public class JDBCUtil {
 private JDBCUtil(){}
 //靜態程式碼塊在類載入時執行,並且執行一次。
 static{
  try {
   Class.forName("com.mysql.cj.jdbc.Driver");
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
 }
 //獲取資料庫連線物件
 public static Connection getConnection() throws Exception{
  String url="jdbc:mysql://127.0.0.1:3306/zy?&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
  String user="root";
  String password="rootroot";

  return DriverManager.getConnection(url,user,password);
 }
 /**
  *關閉資源
  * @param conn 連線物件
  * @param ps 資料庫操作物件
  * @param rs 結果集
  */
 public static void close(ResultSet rs,Statement ps,Connection conn){
  if (rs != null) {
   try {
    rs.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  if (ps != null) {
   try {
    ps.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  if (conn != null) {
   try {
    conn.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }
}

index.jsp

<%@ page import="entity.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>查詢頁面</title>
</head>
<body>
<div align="center">
 <h2/>輸入使用者名稱,查詢資訊
 <form action="/findByName" method="get">
  <input type="text" name="name" id="name">
  <input type="submit" value="查詢">
 </form>
 <%
  User userInfo = (User) request.getAttribute("userInfo");
 %>
 <%
  if (userInfo != null) {
 %>
 <table border="3">
  <tr>
   <th>使用者名稱</th>
   <th>密碼</th>
   <th>年齡</th>
  </tr>
  <tr>
   <td> &nbsp; &nbsp; <%=userInfo.getName()%> &nbsp; &nbsp;</td>
   <td> &nbsp; &nbsp; <%=userInfo.getPassword()%> &nbsp; &nbsp;</td>
   <td> &nbsp; &nbsp; <%=userInfo.getAge()%> &nbsp; &nbsp;</td>
  </tr>

 </table>
 <%
  }
 %>
</div>
</body>
</html>

register.jsp

<%@ page import="com.mysql.cj.util.StringUtils" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>Title</title>
</head>
<body>
<br>
<br>
<%
 String info =(String) request.getAttribute("info");
%>
<%
 if (!StringUtils.isNullOrEmpty(info)){
%>
  <h1 style="color: red;text-align: center" ><%=info%></h1>
<%
 }
%>

<div align="center">
 <form action="/register" method="post">
  <table border="2">
   <tr>
    <th>使用者名稱</th>
    <td><input type="text" name="userName"/></td>
   </tr>
   <tr>
    <th>密碼</th>
    <td><input type="password" name="password"/></td>
   </tr>
   <tr>
    <th>年齡</th>
    <td><input type="text" name="age"/></td>
   </tr>
   <tr>
    <td colspan="2" align="center">
     <input type="submit" value="註冊"/>
     <input type="reset" value="清空"/>
    </td>
   </tr>
  </table>
 </form>
</div>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
   version="4.0">
 <servlet>
  <servlet-name>LoginServlet</servlet-name>
  <servlet-class>servlet.LoginServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>RegisterServlet</servlet-name>
  <servlet-class>servlet.RegisterServlet</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>FindByNameServlet</servlet-name>
  <servlet-class>servlet.FindByNameServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>LoginServlet</servlet-name>
  <url-pattern>/login</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>RegisterServlet</servlet-name>
  <url-pattern>/register</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>FindByNameServlet</servlet-name>
  <url-pattern>/findByName</url-pattern>
 </servlet-mapping>

 <!--設定預設歡迎檔案規則-->
 <welcome-file-list>
  <welcome-file>login.html</welcome-file> <!--servlet 作為預設歡迎檔案 ‘/'需要去掉-->
 </welcome-file-list>
</web-app>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>登陸介面</title>
</head>
<body>
<div align="center">
 <font size="10px" color="#00008b">使用者登入</font>
 <form action="/login" method="post">

  <table border="2">
   <tr>
    <th>使用者名稱</th>
    <td><input type="text" name="userName"/></td>
   </tr>
   <tr>
    <th>密碼</th>
    <td><input type="password" name="password"/></td>
   </tr>
   <tr>
    <td colspan="2" align="center">
     <input type="submit" value="登入"/>
     <input type="reset" />
    </td>
   </tr>
  </table>
 </form>
 <a href="/jsp/register.jsp" rel="external nofollow" rel="external nofollow" style="text-align: left">立即註冊</a>


</div>
</body>
</html>

login_error.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>登入驗證</title>
</head>
<body>
<div align="center">
 <font size="10px" color="#00008b">使用者登入</font><br>
 <font size="5px" color="red">登入資訊不存在,請重新登陸!!!</font>
 <form action="/login" method="post">
  <table border="2">
   <tr>
    <th>使用者名稱</th>
    <td><input type="text" name="userName" /></td>
   </tr>
   <tr>
    <th>密碼</th>
    <td><input type="password" name="password" /></td>
   </tr>
   <tr>
    <td colspan="2" align="center">
     <input type="submit" value="登入"/>
     <input type="reset">

    </td>
   </tr>
  </table>
 </form>
 <a href="/jsp/register.jsp" rel="external nofollow" rel="external nofollow" style="text-align: left">立即註冊</a>

</div>
</body>
</html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。