Jsp+Servlet實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)查詢
本文實(shí)例為大家分享了Jsp+Servlet實(shí)現(xiàn)簡(jiǎn)單登錄注冊(cè)查詢的具體代碼,供大家參考,具體內(nèi)容如下
1、注冊(cè)功能:
制作一個(gè)注冊(cè)頁(yè)面
用戶輸入:
用戶名
密碼
年齡
注冊(cè)成功:——>跳轉(zhuǎn)至登錄頁(yè)面進(jìn)行登錄
注冊(cè)失敗:——>文字或其他形式的提示皆可
2、簡(jiǎn)易查詢:
制作一個(gè)查詢頁(yè)面
輸入用戶名
顯示該用戶的用戶名、密碼、年齡
演示
1.啟動(dòng)進(jìn)入登陸頁(yè)面

2.點(diǎn)擊注冊(cè),進(jìn)入注冊(cè)頁(yè)面,成功跳轉(zhuǎn)到登錄頁(yè)面

失敗則提示

回到登錄頁(yè)面,登錄成功進(jìn)入查詢頁(yè)面

登錄失敗顯示提示信息

輸入用戶名->顯示該用戶的用戶名、密碼、年齡

代碼

dao
public class UserDao {
private Connection conn = null;
private PreparedStatement ps=null;
private int result=0;
private ResultSet rs=null;
//用戶注冊(cè)
public int register(User user){
String sql="insert into users(name,password,age) value (?,?,?)";
try {
//獲取數(shù)據(jù)庫(kù)連接對(duì)象
conn= JDBCUtil.getConnection();
//獲取數(shù)據(jù)庫(kù)操作對(duì)象
ps=conn.prepareStatement(sql);
ps.setString(1,user.getName());
ps.setString(2,user.getPassword());
ps.setInt(3,user.getAge());
//執(zhí)行sql
result=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtil.close(null,ps,conn);
}
return result;
}
//登錄驗(yàn)證用戶信息
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,ps,conn);
}
return result;
}
//根據(jù)用戶名 顯示用戶名、密碼、年齡
public User findByName(String userName){
String sql="select name,password,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,password,age);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtil.close(null,ps,conn);
}
return user;
}
}
entity 實(shí)體類
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();
// 注冊(cè)
@Override
public int register(User user) {
return userDao.register(user);
}
// 登陸
@Override
public int login(String userName, String password) {
return userDao.login(userName,password);
}
// 根據(jù)用戶名查找信息
@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);
//將查詢結(jié)果放入request作用域
request.setAttribute("userInfo",user);
request.getRequestDispatcher("/jsp/index.jsp").forward(request,response);
}
}
// LoginServlet
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1 獲取
String userName = request.getParameter("userName");
String password = request.getParameter("password");
//2 service調(diào)用dao對(duì)數(shù)據(jù)庫(kù)操作
UserService userService = new UserServiceImpl();
int result = userService.login(userName, password);
//3 成功跳轉(zhuǎn)到查詢頁(yè)面,失敗跳轉(zhuǎn)到失敗頁(yè)面
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, HttpServletResponse response) throws ServletException, IOException {
UserService userService = new UserServiceImpl();
User user = null;
int result = 0;
//1【調(diào)用請(qǐng)求對(duì)象】讀取【請(qǐng)求頭】參數(shù)信息,得到用戶注冊(cè)信息
String userName, password, age;
userName = request.getParameter("userName");
password = request.getParameter("password");
age = request.getParameter("age");
user = new User(userName, password, Integer.valueOf(age));
//2 調(diào)用userService——>userDao
// 先查詢用戶是否存在
User byName = userService.findByName(userName);
if (byName!=null){
request.setAttribute("info","用戶已存在!");
request.getRequestDispatcher("/jsp/register.jsp").forward(request,response);
}
// 注冊(cè)
result = userService.register(user);
//3 設(shè)置編碼格式,防止亂碼
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//注冊(cè)成功:——>跳轉(zhuǎn)至登錄頁(yè)面進(jìn)行登錄
//注冊(cè)失敗:——>注冊(cè)頁(yè)面提示:注冊(cè)失敗
if (result == 1) {
response.sendRedirect("/login.html");
} else {
request.setAttribute("info","注冊(cè)失??!");
request.getRequestDispatcher("/jsp/register.jsp").forward(request,response);
}
}
}
JDBCUtil
public class JDBCUtil {
private JDBCUtil(){}
//靜態(tài)代碼塊在類加載時(shí)執(zhí)行,并且執(zhí)行一次。
static{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//獲取數(shù)據(jù)庫(kù)連接對(duì)象
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);
}
/**
*關(guān)閉資源
* @param conn 連接對(duì)象
* @param ps 數(shù)據(jù)庫(kù)操作對(duì)象
* @param rs 結(jié)果集
*/
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>查詢頁(yè)面</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> <%=userInfo.getName()%> </td>
<td> <%=userInfo.getPassword()%> </td>
<td> <%=userInfo.getAge()%> </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="注冊(cè)"/>
<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> <!--設(shè)置默認(rèn)歡迎文件規(guī)則--> <welcome-file-list> <welcome-file>login.html</welcome-file> <!--servlet 作為默認(rèn)歡迎文件 ‘/'需要去掉--> </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" style="text-align: left">立即注冊(cè)</a> </div> </body> </html>
login_error.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登錄驗(yàn)證</title> </head> <body> <div align="center"> <font size="10px" color="#00008b">用戶登錄</font><br> <font size="5px" color="red">登錄信息不存在,請(qǐng)重新登陸?。。?lt;/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" style="text-align: left">立即注冊(cè)</a> </div> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
秒殺系統(tǒng)Web層設(shè)計(jì)的實(shí)現(xiàn)方法
這篇文章主要介紹了秒殺系統(tǒng)Web層設(shè)計(jì)的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家掌握這樣的設(shè)計(jì)方式,需要的朋友可以參考下2017-10-10
Spring獲取ApplicationContext對(duì)象工具類的實(shí)現(xiàn)方法
這篇文章主要介紹了 Spring獲取ApplicationContext對(duì)象工具類的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
JSP使用JDBC連接MYSQL數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了JSP使用JDBC連接MYSQL數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了JDBC的下載,注冊(cè)及具體使用技巧,需要的朋友可以參考下2015-12-12
springMVC使用jsp:include嵌入頁(yè)面的兩種方法(推薦)
下面小編就為大家?guī)?lái)一篇springMVC使用jsp:include嵌入頁(yè)面的兩種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
jsp傳參 servlet接收中文亂碼問(wèn)題的解決方法
下面小編就為大家?guī)?lái)一篇jsp傳參 servlet接收中文亂碼問(wèn)題的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07

