网络编程
位置:首页>> 网络编程>> Jsp编程>> Jsp+Servlet实现简单登录注册查询

Jsp+Servlet实现简单登录注册查询

作者:-JInterest  发布时间:2023-07-15 18:08:08 

标签:jsp,登录,注册

本文实例为大家分享了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,ps,conn);
}
return result;
}

//根据用户名 显示用户名、密码、年龄
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 实体类


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, HttpServletResponse response) throws ServletException, 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, HttpServletResponse response) throws ServletException, IOException {
UserService userService = new UserServiceImpl();
User user = null;
int result = 0;
//1【调用请求对象】读取【请求头】参数信息,得到用户注册信息
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 调用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" 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" style="text-align: left">立即注册</a>

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

来源:https://blog.csdn.net/HIHE_i/article/details/108833039

0
投稿

猜你喜欢

  • Truncate是SQL中的一个删除数据表内容的语句,用法是:TRUNCATE TABLE [Table Name]。下面是对Truncat
  • 众所周知windows平台漏洞百出,补丁一个接一个,但总是补也补不净。我把我所知道的看asp源码的方法总结了一下,并且用c#写了个应用程序来
  • XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能,这使XML从根本
  • 同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,而系统里有太多层次的引用.所以清起来相当麻烦用下面这个脚本
  • 分区视图联接来自一组成员的水平分区数据,使数据看起来象来自同一张表。SQL Server 2000 区分本地分区视图和分布式分区视图。在本地
  • 一、前言在学习深度学习会发现都比较爱用python这个argparse,虽然基本能理解,但没有仔细自己动手去写,因此这里写下来作为自己本人的
  • create or replace PROCEDURE proceudre_name AS BEGIN DECLARE sPara VARC
  • 本文代码将一些简单常用的SQL语句,拆分、封装成链式函数与终结函数,链式操作没有先后之分,实现傻瓜式mysql数据库操作。 同时学习下静态成
  • 在web开发中经常遇到多关键词对对单个字段查询,我一般是通过动态数组来实现的。当然多个关键词的一般是用空格或,隔开,我这几假设多个关键词用空
  • 原文作者:青女  附注及色样添加:Quester西式的色名及色样表,可以参见以下链接 (Java 类色彩兼容):http
  • 对于PHP的逐渐流行,我们有目共睹:无论是BLOG程序中的WordPress,还是CMS程序中的DEDECMS,还是BBS程序中的Discu
  • 本文将想大家简单介绍一下XML HttpRequst对象基础方法,希望通过本文能够使大家对其有一个初步的了解readyState一共有5个可
  • 假如不使用INSTEAD OF触发器或可更新分区视图而是通过视图来修改数据,那么再修改之前,请考虑下列准则:◆如果在视图定义中使用了 WIT
  • 很多朋友和我讨论了一些关于网站开发到底使用哪种语言最合适,尤其是到网站一定有一定流量的时候,到底那种web语言更适合做站呢,精灵这里根据自己
  • MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。MySQL 是完全网络化
  • 一、将PHP数组转换为JSON格式在PHP中,我们可以直接使用数组来存储数据。但是在JS中,数组通常以JSON(JavaScript Obj
  • 自动上次ymPrompt组件发布,自己就曾发现在IE8下遮罩的半透明滤镜有时无效的问题,后来也有网友提出过这个问题,但自己一直也没有太多关注
  • sql代码如下:CREATE PROCEDURE Proname //使用CREATE PROCED
  • 如何用表单在线建立目录?很简单,两个文件就搞定了:creatfolder.htm' 表单文件<form n
  • 我看blog里,还有很多地方都引用过我写的这个类,转了不少,但自己一直也没发表过,这次正式发表一下。在蓝色理想中有人不懂怎么用,我在baid
手机版 网络编程 asp之家 www.aspxhome.com