请求重定向 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+重定向的更多相关文章

  1. Servlet交互【重定向 与 请求分派】详解

    Servlet交互 在serlvet中,需要调用另外一个资源来对浏览器的请求进行响应,两种方式实现: 调用HttpServletResponse.sendRedirect 方法实现 重定向 调用Req ...

  2. servlet转发与重定向区别

    servlet转发与重定向   HttpServletRequest: 表示浏览器向服务器发送的请求报文,由Tomcat创建然后作为参数传递给我们doget,dopost方法. 功能:getParam ...

  3. java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)

    转自:https://zhangkunnan.iteye.com/blog/2040462 前言 Java语言 Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP.Servlet. ...

  4. jsp+Servlet+JavaBean+JDBC+MySQL项目增删改查

    1简单的Mvc,分层建包. java resources src/mian/java (1)dao 包 JDBC连接类,连接数据库.增删改查方法,其他的方法. (2)model包 实体类,数据库字段, ...

  5. 创建jsp+Servlet+JavaBean+JDBC+MySQL项目的过程

    1 根据需求建立Mysql数据,确立数据库的表的字段.属性.主键,外键等.下面我使用的数据库名dev ,表名user,字段  name,设置为主键.用户名不能为空,字段password,密码 2 在E ...

  6. 熟悉javaEE主流框架Spring boot,Spring Cloud,Mybatis,了解Servlet,JDBC

    什么是Tomcat 阿帕奇提供的小型服务器软件,支持servet和jsp规范 lib包:存放jar包 WabApp:发布项目的目录 work:jsp编译生成.class的目录 LOgs:存放日志文件 ...

  7. Servlet+JSP+JDBC综合案例

    层级关系: 一.Util包 包里面写一个JDBCTools.java文件 功能:实现数据库连接返回一个Connection对象,并且可以实现数据库相应资源的关闭! 注意事项: 1.定义成员变量 1 p ...

  8. servlet jsp jdbc bootstrarp mvc分层模式实现的第一个项目

    登录注册界面 这是一个注册和登录的界面 用到了前端页面中自带的一点H5的标签和属性---巩固下 邮箱格式 :type="email"  不能为空:  required=" ...

  9. 使用Servlet和jdbc创建用户登录验证

    首先创建一个用户表,用来保存用户名 密码,并插入几条数据 mysql> desc user;+----------+-------------+------+-----+---------+-- ...

随机推荐

  1. 移动端屏幕适配(rem+js)

    什么是移动端适配 在制作webapp时,一个很关键的问题就是适配各种机型不同屏幕的大小,让每种机型上的布局看起来都尽量一样. 也就是说用同一套代码在不同分辨率的手机上跑时,页面元素间的间距.留白,以及 ...

  2. [AcWing 53] 最小的 k 个数

    堆排序 点击查看代码 class Solution { public: vector<int> getLeastNumbers_Solution(vector<int> inp ...

  3. muduo源码分析之Buffer

    这一次我们来分析下muduo中Buffer的作用,我们知道,当我们客户端向服务器发送数据时候,服务器就会读取我们发送的数据,然后进行一系列处理,然后再发送到其他地方,在这里我们想象一下最简单的Echo ...

  4. linux fedora35 配置jdk,安装mysql,安装tomcat

    配置jdk18很简单,下载jdk,只需要.tar.gz结尾的文件就行,https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.t ...

  5. 零基础学Java第二节(运算符、输入、选择流程控制)

    本篇文章是<零基础学Java>专栏的第二篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 第一章 运算符 1.1 算术运算符的概述和用法 运算符 对常量和变 ...

  6. 详细剖析pyecharts大屏的Page函数配置文件:chart_config.json

    目录 一.问题背景 二.揭开json文件神秘面纱 三.巧用json文件 四.关于Table图表 五.同步讲解视频 5.1 讲解json的视频 5.2 讲解全流程大屏的视频 5.3 讲解全流程大屏的文章 ...

  7. 110. Balanced Binary Tree - LeetCode

    Question 110. Balanced Binary Tree Solution 题目大意:判断一个二叉树是不是平衡二叉树 思路:定义个boolean来记录每个子节点是否平衡 Java实现: p ...

  8. 缓存&PWA实践

    缓存&PWA 实践 一.背景 从上一篇<前端动画实现与原理分析>,我们从 Performance 进行动画的性能分析,并根据 Performance 分析来优化动画.但,前端不仅仅 ...

  9. Python工程:ImportError: attempted relative import with no known parent package

    Python工程:ImportError: attempted relative import with no known parent package 解决方法: 1.对每个目录创建的时候都选择创建 ...

  10. Java_选择结构

    if单选择结构 if(布拉尔表达式){ //如果布拉尔表达式为true将执行的语句 } if双选择结构 if(布拉尔表达式){ //如果布拉尔表达式的值为true }else{ //如果布拉尔表达式的 ...