【搭建JavaEE】(3)前后端交互,请求响应机制,JDBC数据库连接

embedded/2025/1/16 12:54:14/

前后端交互

在这里插入图片描述

Apache Tomat

在这里插入图片描述

B/S目前主流。

在这里插入图片描述

tomat包含2部分:

  1. apache
  2. 容器

在这里插入图片描述
在这里插入图片描述

再认识servlet

在这里插入图片描述

在这里插入图片描述

抽象出的开发模式

在这里插入图片描述

项目创建配置

maven +javaee+tomcat
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

忽略一些不用的文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

webapp文件夹

在这里插入图片描述

HiServlet

在这里插入图片描述
在这里插入图片描述

这里面出现了webinfo,这个别删因为这个呢,是这这个这个文件特别重要。

在这里插入图片描述
在这里插入图片描述

Url–>uri(抽象)
在这里插入图片描述

虚拟地址——web.xml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TOmat启动前

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注解版–SuperHiSevlet

在这里插入图片描述

*请求-响应

MyRequestServlet

在这里插入图片描述

HttpServletRequest

在这里插入图片描述

获取前端数据

  request.getParameter("前端参数")
  • form表单中name属性
<input name='username' value='abc'>
  • a标签
<a href='localhost:8099/deep?name=abc&pass=123'

在这里插入图片描述

获取多个数据
获取请求方法
获取头

HttpServletRequest.class

在这里插入图片描述
在这里插入图片描述

package com.ffyc.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;@WebServlet(value = "/req")
public class MyRequestServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {String name = request.getParameter("name");String username = request.getParameter("username");System.out.println(name + ":" + username);System.out.println("------------------------------------------");String methodName = request.getMethod();System.out.println("method名称:" + methodName);String[] hobbies = request.getParameterValues("hobby");//多个数据System.out.println("爱好:" + Arrays.toString(hobbies));Enumeration<String> headerNames = request.getHeaderNames();System.out.println("----请求头----------------------");while(headerNames.hasMoreElements()){System.out.println(headerNames.nextElement());}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试请求</title>
</head>
<body><a href="http://localhost:8099/deep/req?name=abc">测试请求</a><hr/><form action="http://localhost:8099/deep/req" method="post"><input type="text" name="username" placeholder="请输入用户名"><input type="checkbox" name="hobby" value="basket-ball">basket-ball<input type="checkbox" name="hobby" value="TV">TV<input type="checkbox" name="hobby" value="GAME">GAME<input type="submit" value="提交">

请求乱码问题

 request.setCharacterEncoding("utf-8");

过滤器–切面

在这里插入图片描述

过滤器–不同的功能块

在这里插入图片描述

配置 .xml

插在servlet之前响应

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后台响应

乱码问题(HttpServletResponse)

servletRequest.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=utf-8");
filterChain.doFilter(servletRequest, servletResponse);

在这里插入图片描述

登录页面

在这里插入图片描述
在这里插入图片描述

过滤器

在这里插入图片描述

import javax.servlet.*;
import java.io.IOException;public class CodingFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("utf-8");servletResponse.setContentType("text/html;charset=utf-8");filterChain.doFilter(servletRequest, servletResponse);}
}

在这里插入图片描述

映射–index.html(LoginServlet.java)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

《没有Web包》

在这里插入图片描述

代码

在这里插入图片描述

LoginServlet.java

package com.ffyc.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet(value = "/login.do")
public class LoginServlet extends HttpServlet {final String USERNAME = "admin";final String PASSWORD = "123";@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");if (USERNAME.equals(username) && PASSWORD.equals(password)) {//successresp.sendRedirect("login-success.html");} else {//loginresp.sendRedirect("index.html");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录页面</title>
</head>
<body><form action="http://localhost:8099/login.do" method="post"><fieldset><legend>用户登录</legend><div><input type="text" name="username" placeholder="用户名"></div><div><input type="password" name="password" placeholder="密码"></div><div><input type="submit" value="登录"><input type="reset" value="取消"></div></fieldset>
</form></body>
</html>

login-success.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录成功页面</title>
</head>
<body><img src="https://img95.699pic.com/photo/40236/5997.jpg_wh300.jpg"/><h1>登录成功</h1></body>
</html>

CodingFilter.java

package com.ffyc.filter;import javax.servlet.*;
import java.io.IOException;public class CodingFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("utf-8");servletResponse.setContentType("text/html;charset=utf-8");filterChain.doFilter(servletRequest, servletResponse);}
}

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"><filter><filter-name>charset</filter-name><filter-class>com.ffyc.filter.CodingFilter</filter-class></filter><filter-mapping><filter-name>charset</filter-name><url-pattern>*.do</url-pattern></filter-mapping>
</web-app>

JDBC

在这里插入图片描述

引入JDBC

       <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>

在这里插入图片描述

创建表

在这里插入图片描述

创建用户类

  <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version></dependency>

在这里插入图片描述

@Data
public class User {private Integer id;private String username;private String password;private String name;
}

在这里插入图片描述

1

    private final String USERNAME="root";private final String PASSWORD = "123456";private final String URL ="jdbc:mysql://localhost:3306/kingdom_db?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";

2

    try {Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);} catch (Exception e) {throw new RuntimeException(e);}

3

在这里插入图片描述

4

在这里插入图片描述

5
在这里插入图片描述

UserDaolmpl.java

package com.ffyc.dao.impl;import com.ffyc.dao.IUserDao;
import com.ffyc.entity.User;import java.sql.*;/*** 与数据库交互*/
public class UserDaoImpl implements IUserDao {private final String USERNAME = "root";private final String PASSWORD = "123456";private final String URL ="jdbc:mysql://localhost:3306/stu_db?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";private Connection conn;private PreparedStatement pst;private ResultSet rs;public UserDaoImpl() {try {Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);} catch (Exception e) {throw new RuntimeException(e);}}@Overridepublic User findUsernameAndPassword(String username, String password) {try {String sql = "Select * FROM user_tab WHERE user_username=? AND user_password=?";pst = conn.prepareStatement(sql);pst.setString(1,username);pst.setString(2, password);rs = pst.executeQuery();if(!rs.next()){return null;}else{Integer id =  rs.getInt("user_id");String u = rs.getString("user_username");String p = rs.getString("user_password");String name = rs.getString("user_name");User user = new User();user.setId(id);user.setUsername(u);user.setPassword(p);user.setName(name);return user;}} catch (Exception e) {throw new RuntimeException(e);}}
}

http://www.ppmy.cn/embedded/154395.html

相关文章

Unity中实现倒计时结束后干一些事情

问题描述&#xff1a;如果我们想实现在一个倒计时结束后可以执行某个方法&#xff0c;比如挑战成功或者挑战失败&#xff0c;或者其他什么的比如生成boss之类的功能&#xff0c;而且你又不想每次都把代码复制一遍&#xff0c;那么就可以用下面这种方法。 结构 实现步骤 创建一…

【Rust】枚举与模式匹配

目录 思维导图 一、概述 1. 枚举的定义与使用 2. 特殊枚举&#xff1a;Option 4. 模式匹配 5. if let构造 二、枚举 1. 枚举的定义与作用 2. IP地址的枚举示例 示例代码 3. 结构体与枚举的组合 示例代码 4. 枚举变体的灵活性 示例代码 5. 枚举的方法 代码示例&a…

python mysql库的三个库mysqlclient mysql-connector-python pymysql如何选择,他们之间的区别

三者的区别 1. mysqlclient 特点&#xff1a; 是一个用于Python的MySQL数据库驱动程序&#xff0c;用于与MySQL数据库进行交互。 依赖于MySQL的本地库&#xff0c;因此在安装时需要确保系统上已安装了必要的依赖项&#xff0c;如libmysqlclient-dev等。 性能较好&#xff0c…

SCDN跟高防IP相比哪个更好

在当前的互联网环境中&#xff0c;网络攻击日益频繁和复杂&#xff0c;确保业务的安全性和稳定性成为了众多企业的首要任务。SCDN&#xff08;Secure Content Delivery Network&#xff0c;安全内容分发网络&#xff09;和高防IP作为两种常见的网络安全解决方案&#xff0c;各自…

【IDEA 2024】学习笔记--文件选项卡

在我们项目的开发过程中&#xff0c;由于项目涉及的类过多&#xff0c;以至于我们会打开很多的窗口。使用IDEA默认的配置&#xff0c;个人觉得十分不便。 目录 一、设置多个文件选项卡按照文件字母顺序排列 二、设置多个文件选项卡分行显示 一、设置多个文件选项卡按照文件字…

DCU异构程序--矩阵乘

目录 一、概述 二、程序实现 三、编译运行 一、概述 HIP属于显式编程模型&#xff0c;需要在程序中明确写出并行控制语句&#xff0c;包括数据传输、核函数启动等。核函数是运行在DCU上的函数&#xff0c;在CPU端运行的部分称为主机端&#xff08;主要是执行管理和启动&…

YOLOv9改进,YOLOv9自研检测头融合HAttention用于图像修复的混合注意力检测头

参考文章 完成本篇内容,首先完成这篇文章,并把代码添加到 YOLOv9 中: YOLOv9改进,YOLOv9引入HAttention注意机制用于图像修复的混合注意力转换器,CVPR2023,超分辨率重建 下文都是手把手教程,跟着操作即可添加成功 目录 参考文章🎓一、YOLOv9原始版本代码下载🍀🍀…

npx和npm区别

npx 和 npm 是 Node.js 生态中的两个工具&#xff0c;它们有不同的用途和功能&#xff1a; 1. npm&#xff08;Node Package Manager&#xff09; 主要作用&#xff1a; 包管理工具&#xff1a; 用来安装、管理、卸载 Node.js 的包&#xff08;module/library&#xff09;。提…