用户注册登录退出(jsp+servlet+sql2008)

1.项目目录结构:


访问注册地址:http://localhost:8080/UserLogin/WebRoot/login.jsp

页面跳转到reg.jsp

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
	<form action="http://localhost:8080/UserLogin/RegServer" method="post"
		οnsubmit="return reg(this);">
		<tr>
			<td align="right">用户名:</td>
			<td><input type="text" name="username"></td>
		</tr>
		<tr>
			<td align="right">密码:</td>
			<td><input type="password" name="password"></td>
		</tr>
		<tr>
			<td align="right">电话:</td>
			<td><input type="text" name="tel"></td>
		</tr>
		<tr>
			<td colspan="2" align="center"><input type="submit" value="注册">
					<input type="reset" value="重置"></td>

		</tr>

	</form>
</body>
</html>
注释:action="http://localhost:8080/UserLogin/RegServer":访问名字叫RegServer的servlet

web.xml

<!-- 用户注册 -->
  <servlet>
  <!-- servlet 的名字 -->  
  <servlet-name>RegServer</servlet-name>
  <!-- servlet 的实现类 -->  
  <servlet-class>com.lyq.service.RegServer</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>RegServer</servlet-name>
  <!--映射的url路径 -->
  <url-pattern>/RegServer</url-pattern>
  </servlet-mapping>
跳转到servlet 的实现类的实现类里面:

package com.lyq.service;

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.lyq.model.User;
import com.lyq.model.dao.UserDao;

/**
 * 用户注册
 */
public class RegServer extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取用户名
		String username = request.getParameter("username");
		System.out.println(username);
		String password = request.getParameter("password");
		String sex = request.getParameter("sex");
		String photo = request.getParameter("photo");
		String tel = request.getParameter("tel");
		String email = request.getParameter("email");
		UserDao userDao = new UserDao();
		if (username != null && !username.isEmpty()) {
			if (userDao.userIsExist(username)) {
				User user = new User();
				user.setUsername(username);
				user.setPassword(password);
				user.setSex(sex);
				user.setPhoto(photo);
				user.setTel(tel);
				user.setEmail(email);
				userDao.saveUser(user);
				request.setAttribute("info", "恭喜,注册成功!<br>");
			} else {
				request.setAttribute("info", "错误,用户已存在!<br>");
			}
		}
		// 转发到message.jsp
		request.getRequestDispatcher("WebRoot/message.jsp").forward(request,
				response);
	}

}
注释:转发到message.jsp时:由于我是在WebContent下面新建的文件夹WebRoot所以我的路径是:WebRoot/message.jsp。有一点要注意 servlet直接访问WebContent文件夹下的jsp的

UserDao:数据库操作类

package com.lyq.model.dao;

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

import com.lyq.util.DataBaseUtil;
import com.lyq.model.User;

public class UserDao {

	public boolean userIsExist(String username) {
		// 获取数据库连接Conntion
		Connection conn = DataBaseUtil.getConnection();
		// 根据指定用户名查询用户信息
		String sql = "select * from tb_user where username=?";
		try {
			// 获取preparedStatement对象
			PreparedStatement ps = conn.prepareStatement(sql);
			// 对用户对象属性赋值
			ps.setString(1, username);
			// 执行查询获取结果集
			ResultSet rs = ps.executeQuery();
			// 判定结果集是否有效
			if (!rs.next()) {
				// 如果无效则证明此用户名可用
				return true;
			}
			// 释放ResultSet对象的数据库和JDBC资源
			rs.close();
			// 释放此PreparedStatement对象的数据库和JDBC资源
			ps.close();

		} catch (Exception e) {
			// 关闭数据库连接
			DataBaseUtil.closeConnection(conn);
		}

		return false;
	}

	public void saveUser(User user) {
		// 获取数据库连接 Connection对象
		Connection conn = DataBaseUtil.getConnection();
		// 插入用户注册信息的SQL语句
		String sql = "insert into tb_user(username,password,sex,tel,photo,email) values(?,?,?,?,?,?)";
		try {
			// 获取PreparedStatement对象
			PreparedStatement ps = conn.prepareStatement(sql);
			// 对SQL语句的占位符参数进行动态赋值
			ps.setString(1, user.getUsername());
			ps.setString(2, user.getPassword());
			ps.setString(3, user.getSex());
			ps.setString(4, user.getTel());
			ps.setString(5, user.getPhoto());
			ps.setString(6, user.getEmail());
			// 执行更新
			ps.executeUpdate();
			// 释放此PreparedStatement对象的数据库和JDBC资源
			ps.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 关闭数据库了连接
			DataBaseUtil.closeConnection(conn);
		}

	}

	public User login(String username, String password) {
		User user = null;
		// 获取数据库连接 Connection对象
		Connection conn = DataBaseUtil.getConnection();
		// 根据用户名及密码查询用户信息
		String sql = "select * from tb_user where username = ? and password = ?";
	
		try {
			// 获取PreparedStatement对象
			PreparedStatement ps = conn.prepareStatement(sql);
			// 对SQL语句的占位符参数进行动态赋值
			ps.setString(1,username);
			ps.setString(2,password);
			System.out.println(sql);
			// 执行查询获取结果集
			ResultSet rs = ps.executeQuery();
			// 判断结果集是否有效
			if (rs.next()) {
				System.out.println(rs.getString("username"));
				user = new User();
				user.setId(rs.getInt("id"));
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
				user.setSex(rs.getString("sex"));
				user.setTel(rs.getString("tel"));
				user.setPhoto(rs.getString("photo"));
				user.setEmail(rs.getString("email"));
			}
			// 释放ResultSet对象的数据库和JDBC资源
			rs.close();
			// 释放此PreparedStatement对象的数据库和JDBC资源
			ps.close();

		} catch (Exception e) {
			// 关闭数据库了连接
			DataBaseUtil.closeConnection(conn);
		}
		return user;
	}

}

注释:select * from tb_user where username = ? and password = ?中问号前面有空格不然会报错:必须声明标量变量"@P0and"

数据库连接类DataBaseUtil不说了,上篇文章说了的。

用户就注册成功了会跳转到http://localhost:8080/UserLogin/RegServer页面如图:


登陆访问地址:http://localhost:8080/UserLogin/WebRoot/login.jsp

登陆jsp

<body>
	<form action="http://localhost:8080/UserLogin/LoginServer" method="post" οnsubmit="return reg(this);">
		<tr>
			<td align="right">用户名:</td>
			<td><input type="text" name="username"></td>
		</tr>
		<tr>
			<td align="right">密码:</td>
			<td><input type="password" name="password"></td>
		</tr>
		<tr>
			<td colspan="2" align="center" height="50">
			<input type="submit" value="登陆">
			<input type="reset" value="重置">
			</td>

		</tr>
	</form>

</body>

登陆servlet:

package com.lyq.service;

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.lyq.model.User;
import com.lyq.model.dao.UserDao;

/*
 * 用户登陆
 */
public class LoginServer extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取用户名
		String username = request.getParameter("username");
		System.out.println(username);
		String password = request.getParameter("password");
		UserDao userDao = new UserDao();
		// 根据密码查询用户
		User user = userDao.login(username, password);
		if (user != null) {
			// 将用户放入session中
			request.getSession().setAttribute("user", user);
			// 转发到result页面
			request.getRequestDispatcher("WebRoot/message.jsp").forward(
					request, response);
		} else {
			request.setAttribute("info", "密码用户名有误!");
			request.getRequestDispatcher("WebRoot/message.jsp").forward(
					request, response);
		}

	}

}

退出servlet

package com.lyq.service;

import java.io.IOException;

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

import com.lyq.model.User;

/**
 * 用户退出
 * 
 * @author Administrator
 *
 */
public class UserExitServlet extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 获取session
		HttpSession session = request.getSession();
		// 获取用户对象
		User user = (User) session.getAttribute("user");
		if (user != null) {
			// 将用户对象逐出session
			session.removeAttribute("user");
			// 设置提示信息
			request.setAttribute("info", user.getUsername() + "退出");
		}
		// 转发到message页面
		request.getRequestDispatcher("WebRoot/message.jsp").forward(request,
				response);

	}

}

提示页面:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.lyq.model.User"%>   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
	<%
	 //获取提示信息
	 String info=(String)request.getAttribute("info");
	 //如果提示信息不为空则输出提示信息
	 if(info !=null){
		 out.print(info);
	 }
	 //获取用户登陆的用户信息
	 User user=(User)session.getAttribute("user");
	 //判断用户是否登陆
	 if(user !=null){

	%>
	<form action="http://localhost:8080/UserLogin/UserExitServlet" method="post" οnsubmit="return reg(this);">
	<tr>
		<td align="center" colspan="2">
		<span><%=user.getUsername() %></span>
		登陆成功!!!
		</td>
	</tr>
	<tr>
		<td align="right">电话</td>
		<td><%=user.getTel()%></td>
	</tr>
	<tr>
			<td align="center" height="50">
			<input type="submit" value="退出">
			</td>

	</tr>

</form>
<%
	 }else{
		 out.print("<br>对不起,你没登陆");
	 }
%>
</body>
</html>


注释:1.<%@ page import="com.lyq.model.User"%> 导入user

2.<%%>里面写的Java代码

3.http://localhost:8080/UserLogin/UserExitServlet 调用退出的servlet

注意:访问路径的问题,我是弄了好久才弄明白的

源码下载下载

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基于 JSPServlet 和 JavaBean 实现的简单登陆注册系统的代码示例: 1. 登录页面 login.jsp ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <h1>用户登录</h1> <form action="LoginServlet" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> <p><a href="register.jsp">没有账号?点击注册</a></p> </body> </html> ``` 2. 注册页面 register.jsp ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>注册</title> </head> <body> <h1>用户注册</h1> <form action="RegisterServlet" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> 重复密码:<input type="password" name="password2"><br> <input type="submit" value="注册"> </form> <p><a href="login.jsp">已有账号?点击登录</a></p> </body> </html> ``` 3. LoginServlet.java ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); UserBean user = new UserBean(username, password); boolean valid = user.validate(); if (valid) { HttpSession session = request.getSession(); session.setAttribute("username", username); response.sendRedirect("welcome.jsp"); } else { response.sendRedirect("login.jsp"); } } } ``` 4. RegisterServlet.java ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String password2 = request.getParameter("password2"); if (!password.equals(password2)) { response.sendRedirect("register.jsp"); return; } UserBean user = new UserBean(username, password); boolean success = user.register(); if (success) { HttpSession session = request.getSession(); session.setAttribute("username", username); response.sendRedirect("welcome.jsp"); } else { response.sendRedirect("register.jsp"); } } } ``` 5. UserBean.java ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class UserBean { private String username; private String password; public UserBean(String username, String password) { this.username = username; this.password = password; } public boolean validate() { try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?user=root&password=root&useSSL=false&serverTimezone=UTC"); PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE username = ? AND password = ?"); stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery(); boolean found = rs.next(); rs.close(); stmt.close(); conn.close(); return found; } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); return false; } } public boolean register() { try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?user=root&password=root&useSSL=false&serverTimezone=UTC"); PreparedStatement stmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)"); stmt.setString(1, username); stmt.setString(2, password); int rows = stmt.executeUpdate(); stmt.close(); conn.close(); return rows == 1; } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); return false; } } 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; } } ``` 6. welcome.jsp ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>欢迎</title> </head> <body> <h1>欢迎,<%= session.getAttribute("username") %>!</h1> <p><a href="logout.jsp">退出登录</a></p> </body> </html> ``` 7. logout.jsp ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>退出</title> </head> <body> <% session.invalidate(); response.sendRedirect("login.jsp"); %> </body> </html> ``` 以上代码仅供参考,具体实现需要根据实际情况进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值