Servlet-3 :JDBC+重定向
请求重定向 redirect
1) Servlet接收到浏览器端请求并处理完成后,给浏览器端一个特殊的响应,这个特殊的响应要求浏览器去请求一个新的资源,整个过程中浏览器端会发出两次请求,且浏览器地址栏会改变为新资源的地址。
2) 重定向的情况下,原Servlet和目标资源之间就不能共享请求域数据了
3) 实现重定向的API
package com.atguigu.login.servlet; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.atguigu.login.DAO.UserDAOImpl;
import com.atguigu.login.bean.User; public class LoginServlet extends HttpServlet{ @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("登录信号"); req.setCharacterEncoding("utf-8");
//获取用户名
String username = req.getParameter("username");
//获取密码
String password = req.getParameter("password");
System.out.println(username + " , " + password ); resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
//获取Dao对象
UserDAOImpl userDao = new UserDAOImpl(); User user = userDao.getUserByUsernameAndPassword(username, password); /*
if("Admin".equalsIgnoreCase(username) && "123456".equals(password)) {
//登录成功
out.println("<h1><font color='green'>Login Success! 登录成功<font><h1>");
}else {
//登录失败
//PrintWriter out = resp.getWriter();
out.println("<h1><font color='red'>Login Fail! 登录失败</font></h1>");
}
*/
if(user == null) {
//通过重定向的方式去往登录页面
/*
* 服务器会给浏览器发送一个302状态码以及一个新的地址,
*
*/
resp.sendRedirect("login.html"); }else {
//登录成功
out.println("<h1><font color='green'>Login Success! 登录成功<font><h1>");
}
} }
public class LoginServlet extends HttpServlet
package com.atguigu.login.utils; import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties; public class ConnectionUtil {
private static String driver = null;
private static String url = null ;
private static String username = null ;
private static String password = null ;
private static Properties props = new Properties(); private static ThreadLocal<Connection > tl = new ThreadLocal<>();
static {
try {
//类加载器读取文件
InputStream in =
ConnectionUtil.class.getClassLoader().getResourceAsStream("db.properties");
props.load(in); driver =props.getProperty("jdbc.driver");
url = props.getProperty("jdbc.url");
username= props.getProperty("jdbc.username");
password = props.getProperty("jdbc.password"); Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
} }
public static Connection getConn() throws Exception{
//先尝试从tl中获取
Connection conn = tl.get();
if(conn == null ) {
conn = (Connection) DriverManager.getConnection(url, username, password);
tl.set(conn);
}
return conn ;
} /**
* 关闭连接的方法
*/
public static void closeConn() throws Exception{
//先尝试从tl中获取 Connection conn = tl.get(); if(conn != null ) {
conn.close();
} tl.set(null);
} }
public class ConnectionUtil
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
jdbc.username=root
jdbc.password=123456
db.properties
package com.atguigu.login.DAO; import com.atguigu.login.bean.User; public interface UserDAO {
public User getUserByUsernameAndPassword(String username,String password); }
public interface UserDAO
package com.atguigu.login.DAO; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.atguigu.login.bean.User;
import com.atguigu.login.utils.ConnectionUtil; public class UserDAOImpl implements UserDAO{ @Override
public User getUserByUsernameAndPassword(String username, String password) {
User u = null ;
/*try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}//com.mysql.cj.jdbc.Driver
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
String user="root";
String pawd="123456";*/
try { // Connection conn = DriverManager.getConnection(url, user, pawd);
Connection conn=ConnectionUtil.getConn(); String sql="select id, username,password from stu where username = ? and password = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery(); if(rs.next()) {
u = new User();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
} return u ; } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return null; }
}
public class UserDAOImpl implements UserDAO
package com.atguigu.login.bean; public class User {
private Integer id ;
private String username ;
private String password ;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
public class User
Servlet-3 :JDBC+重定向的更多相关文章
- Servlet交互【重定向 与 请求分派】详解
Servlet交互 在serlvet中,需要调用另外一个资源来对浏览器的请求进行响应,两种方式实现: 调用HttpServletResponse.sendRedirect 方法实现 重定向 调用Req ...
- servlet转发与重定向区别
servlet转发与重定向 HttpServletRequest: 表示浏览器向服务器发送的请求报文,由Tomcat创建然后作为参数传递给我们doget,dopost方法. 功能:getParam ...
- java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
转自:https://zhangkunnan.iteye.com/blog/2040462 前言 Java语言 Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP.Servlet. ...
- jsp+Servlet+JavaBean+JDBC+MySQL项目增删改查
1简单的Mvc,分层建包. java resources src/mian/java (1)dao 包 JDBC连接类,连接数据库.增删改查方法,其他的方法. (2)model包 实体类,数据库字段, ...
- 创建jsp+Servlet+JavaBean+JDBC+MySQL项目的过程
1 根据需求建立Mysql数据,确立数据库的表的字段.属性.主键,外键等.下面我使用的数据库名dev ,表名user,字段 name,设置为主键.用户名不能为空,字段password,密码 2 在E ...
- 熟悉javaEE主流框架Spring boot,Spring Cloud,Mybatis,了解Servlet,JDBC
什么是Tomcat 阿帕奇提供的小型服务器软件,支持servet和jsp规范 lib包:存放jar包 WabApp:发布项目的目录 work:jsp编译生成.class的目录 LOgs:存放日志文件 ...
- Servlet+JSP+JDBC综合案例
层级关系: 一.Util包 包里面写一个JDBCTools.java文件 功能:实现数据库连接返回一个Connection对象,并且可以实现数据库相应资源的关闭! 注意事项: 1.定义成员变量 1 p ...
- servlet jsp jdbc bootstrarp mvc分层模式实现的第一个项目
登录注册界面 这是一个注册和登录的界面 用到了前端页面中自带的一点H5的标签和属性---巩固下 邮箱格式 :type="email" 不能为空: required=" ...
- 使用Servlet和jdbc创建用户登录验证
首先创建一个用户表,用来保存用户名 密码,并插入几条数据 mysql> desc user;+----------+-------------+------+-----+---------+-- ...
随机推荐
- 【基础】字符编码-ASCII、Unicode、utf-8
一.各自背景 1. ASCII ASCII 只有127个字符,表示英文字母的大小写.数字和一些符号.但由于其他语言用ASCII编码表示字节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国 ...
- 全栈交叉编译X86完成过程经验分享
1 CMAKE的交叉编译配置 主要是C和C++编译器的配置和SYSROOT的配置. set (CMAKE_SYSTEM_NAME "Linux") set (CMAKE_SYSTE ...
- 跟我读CVPR 2022论文:基于场景文字知识挖掘的细粒度图像识别算法
摘要:本文通过场景文字从人类知识库(Wikipedia)中挖掘其背后丰富的上下文语义信息,并结合视觉信息来共同推理图像内容. 本文分享自华为云社区<[CVPR 2022] 基于场景文字知识挖掘的 ...
- 【论文阅读】ConvNeXt:A ConvNet for the 2020s 新时代卷积网络
一.ConvNext Highlight 核心宗旨:基于ResNet-50的结构,参考Swin-Transformer的思想进行现代化改造,知道卷机模型超过trans-based方法的SOTA效果. ...
- Oracle 数据库表删除重复数据
删除重复数据并保留一条 方法一 1.建立临时表,记录重复的数据 create table 临时表 as select a.字段1,a.字段2,max(a.rowid) as dataid from 原 ...
- Dapr 不是服务网格,只是我长的和他很像
概述 我们快速看一遍官方文档:https://docs.dapr.io/concepts/service-mesh/#how-dapr-and-service-meshes-compare ,看看 D ...
- Mybatis-Plus乐观锁Version
实现原理 取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果ver ...
- 使用docker创建和运行跨平台的容器化的mssql数据库
我们一般启用sql server数据库要么选择安装SQL Server实例和管理工具(SSMS),要么用vs自带的数据库.如今net跨平台成为趋势,今天给大家介绍另一种我最近在玩的方式,即使用dock ...
- WPF|快速添加新手引导功能(支持MVVM)
阅读导航 前言 案例一 案例二 案例三(本文介绍的方式) 如何使用? 控件如何开发的? 总结 1. 前言 案例一 站长分享过 眾尋 大佬的一篇 WPF 简易新手引导 一文,新手引导的效果挺不错的,如下 ...
- linux-ext4格式文件误删除,该如何恢复?
在开始进行实验之前,我已经新建了一个空目录/data,并将该目录挂载了一块新硬盘,将硬盘分区格式化为ext4的格式,所以当我操作/data目录下的文件及文件夹的时候,实际上就是针对新挂载的硬盘进行数据 ...