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;+----------+-------------+------+-----+---------+-- ...
随机推荐
- 如何在代码层面提供CPU分支预测效率
关于分支预测的基本概念和详细算法可以参考我之前写的知乎回答,基本概念不再阐述了~~ https://www.zhihu.com/question/486239354/answer/2410692045 ...
- C#常见控件与SQL Sever数据库交互
C#常见控件与SQL Sever数据库交互 下拉框(ComboBox)与数据库绑定 首先,我们采用DataSet作为临时的数据库,这样会比较好 那么,我们先创建两个成员(对象) string sqlc ...
- windows下的操作
1.java -jar启动war包 将打好的war包丢到tomcat的webapps目录,然后进入tomcat的bin目录双击运行startup.bat会自动解压war包,在浏览器直接可访问web项目
- 网络协议之:Domain name service DNS详解
目录 简介 DNS的功能 DNS的组成 域名空间Domain name space Name servers DNS的工作流程 DNS资源记录 DNS消息的结构 总结 简介 现在是互联网的世界,大家从 ...
- ansible的介绍与安装
ansible是在远程主机上批量执行命令或者脚本的一个工具 epel源:一个第三方的yum源(阿里巴巴开源镜像站:https://opsx.alibaba.com/mirror?lang=zh-CN) ...
- 什么叫做 SSO
什么叫做 SSO 本文写于 2020 年 12 月 8 日 SSO 的全称叫做 Single Sign On,意味「单点登录」. 何为单点登录?就是你希望自己的两个网站,可以做到:一个网站登录了,另一 ...
- 【工具-Nginx】从入门安装到高可用集群搭建
文章已收录至https://lichong.work,转载请注明原文链接. ps:欢迎关注公众号"Fun肆编程"或添加我的私人微信交流经验 一.Nginx安装配置及常用命令 1.环 ...
- 817. Linked List Components - LeetCode
Question 817. Linked List Components Solution 题目大意:给一个链表和该链表元素组成的一个子数组,求子数组在链表中组成多少个片段,每个片段中可有多个连续的元 ...
- 136_Power BI 自定义矩阵热力图
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 在前几天在pbirs自定义登录后,发现一个问题就是非Power BI原生的视觉无法显示,改回AD登录又可以了.目 ...
- 面试官:BIO、NIO、AIO是什么,他们有什么区别?
哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 书接上回,感觉上次的公司氛围不 ...