安全开发 javaEE应用 servlet 路由技术 生命周期 JDBC数据库操作

news/2025/1/17 4:30:06/

前言

什么是javaEE ? javaEE就是基本的企业开发语言   

什么是servlet(翻译是小服务程序 或者 是服务连接器)  就是本地服务器和http协议的中间件

Servlet 路由

Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。使用Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。本章内容详细讲解了web开发的相关内容以及servlet相关内容的配置使用,是JAVAEE开发的重中之重。

准备条件 1、下载tomcat  和java数据库连接库

 

那这个其实就是 servlet 开启服务器所需的

直接运行

点击 hello Servlet 

出现新的路由方式   

@WebServlet(name = "helloServlet", value = "/hello-servlet")

但是 数据的回显的完成就是下边的 doget  

public class HelloServlet extends HttpServlet {private String message;     //定义一个变量public void init() {message = "Hello World!";   // 使用init进行初始化 值}public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {            // doget的基本用法就是当接收到  Req(get请求的时候) 就会调用下边的东西response.setContentType("text/html");    //定义 数据返回的 类型// HelloPrintWriter out = response.getWriter();   // 把resp 写入到浏览器  没有这一句就无法进行 数据的回显out.println("<html><body>");        // 输出 使用html 输出数据out.println("<h1>" + message + "</h1>");out.println("</body></html>");}public void destroy() {   //数据的销毁}

我们可以改一下值把  hello word 改为 我学开发

resp.setCharacterEncoding("UTF-8");

路由的修改还一个就是  在web入口 的设置   

    <servlet><!--        要加载的名字(自定义)--><servlet-name>HelloServlet</servlet-name><!--        引用的类的名字的的路径--><servlet-class>com.example.kaifa1.HelloServlet</servlet-class></servlet><servlet-mapping><!--        给与url地址--><servlet-name>HelloServlet</servlet-name><!--        访问的路由--><url-pattern>/HelloServlet</url-pattern></servlet-mapping>

路由方式总结1、 直接在类文件前加上 @WebServlet

生命周期

servlet的生命周期就是上边的 那个图 

生命周期的的顺序  就是 先初始化  __init__   再 进行开启小服务   servlet   再一个就是  http服务 

最后是  destory   这个只有在  我们的服务器结束的时候才会执行

package com.example.kaifa1;import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.*;
import javax.servlet.annotation.*;import static java.lang.System.out;//@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {   //extends 是指类的继承 但是继承是有限的 不能直接继承他的类内的其他方法   需要进行声明private String message;public void init() {message = "Hello我学开发!";System.out.println("--------------init");  //输出数据 查看生命周期}//注意这个只是   Severlet  并不是http
//    public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
//        out.println("-----------------------service");    }public void  service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("----------------------service");}public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {String x = req.getParameter("x");System.out.println("-------------doGet");resp.setContentType("text/html");resp.setCharacterEncoding("UTF-8");// HelloPrintWriter out = resp.getWriter();out.println("name"+x);
//        out.println("<html><body>");
//        out.println("<h1>" + message + "</h1>");
//        out.println("</body></html>");out.flush();  // 刷新out.close();}public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {out.println("-----------------------service1111");    }public void destroy() {System.out.println("-------------destroy");}
}

运行一下  这个只需要管  System 的输出结果就行    数据的请求和回显  后边会有

步骤 1、先访问当前路径  触发类方法   

2、 触发了     Sevlet 服务

没有 触发 http  这个是因为需传参数   get 传参之后 就会 调用  http  和  get方法

关闭服务就会输出

接收处理回显

4、处理接受和回显

● HttpServletRequest是ServletRequest的子接口

getParameter(name) — String 通过name获得值

getParameterValues — String[ ] 通过name获得多值

● HttpServletResponse是ServletResponse的子接口

setCharacterEncoding() 设置编码格式

setContentType() 设置解析语言

getWriter() 获得一个PrintWriter字符输出流输出数据

PrintWriter 接受符合类型数据

JDBC数据库

数据库取出数据 到 后端 

java的数据库操作 有多种 JDBC是最简单一种

JavaEE-JDBC基础 - 简书

使用步骤 1、 先下载https://mvnrepository.com/

库把库进行封装

建一个 lib文件夹 右键 jar添加为库

JDBC接口类DriverManager 注册驱动,获取数据库连接ConnectionConnection    数据库连接,获取传输器StatementStatement     传输器执行sql语句ResultSet     查询结果集合

简单说就是 先 注册驱动    建立链接   使用外置的statement  进行数据库的语句的执行   最后使用 resultSet  接受数据

先写入这个  哪里红了就导入包就行了    一键导入包 alt + enter

public class MySelect {public static void main(String[] args) throws ClassNotFoundException, SQLException {}}

1、注册驱动

         //注册驱动Class.forName("com.mysql.jdbc.Driver");

2、建立连接

 // 建立连接String sql="jdbc:mysql://localhost:3306/demo01";  // 3306 后边是数据库的名字  定义连接的 地址 Connection lianejie= DriverManager.getConnection(sql,"root","123456");  // 使用驱动进行连接(链接地址 账号 密码)System.out.println(lianejie);

3、

   // 执行语句String sql1="select * from news";

4\

    //  java是不能直接进行语句的执行 需要使用statementStatement zhixing=lianejie.createStatement();   // 使用创建 statement   sql会话ResultSet jieguo=zhixing.executeQuery(sql1);    // 定义结果  结果是执行 sql1的语句System.out.println(jieguo);  // 输出结果  看一下   

输出结果是这样就表示是连接执行都是正确的

next()方法的作用是将光标从当前位置向前移动一行。在ResultSet对象最初创建时,光标位于第一行之前。因此,第一次调用next()方法会使光标移动到第一行,如果第一行存在,则返回true;如果ResultSet为空(即没有数据行),则返回false。随后的每次调用next()方法都会将光标移动到下一行,直到最后一行之后,此时再调用next()方法将返回false。
  //使用循环 遍历 结果while(jieguo.next()){String id=jieguo.getString("id");String title=jieguo.getString("page_title");String author=jieguo.getString("heading");String content=jieguo.getString("content");}

获取数据的数据


http://www.ppmy.cn/news/1563789.html

相关文章

算法15、双指针(归并排序两种做法)

&#x1f330;1、two-Sum严格递增序列 晴问算法 因为是有序的序列&#xff08;严格递增&#xff09;所以可以考虑用二分查找的思路&#xff01; 二分查找变体版-双指针。 因为严格递增的序列特性&#xff0c;让i, j(或者left, right)的枚举互相牵制&#xff0c;因而我们可以…

AI大模型开发—1、百度的千帆大模型调用(文心一言的底层模型,ENRIE等系列)、API文档目的地

文章目录 前言一、千帆大模型平台简介二、百度平台官网初使用1、平台注册和使用2、应用注册 并 申请密钥3、开启千帆大模型 API调用a、API文档b、 前言 本章旨在为读者奉献一份实用的操作指南&#xff0c;深入探索如何高效利用百度千帆大模型平台的卓越功能。我们将从账号注册…

使用Redis防止重复发送RabbitMQ消息

问题 今天遇到一个问题&#xff0c;发送MQ消息的时候需要保证不会重复发送&#xff0c;注意不是可靠到达&#xff08;可靠到达可以通过消息确认机制和回调接口保证&#xff09;&#xff0c;这里保证的是不会生产多条一样的消息。 方法 综合讨论下来决定使用Redis缓存来解决&…

Linux中安装mysql8,很详细

一、查看系统glibc版本号&#xff0c;下载对应版本的MySQL 1、查看glibc版本号办法 方法一&#xff1a;使用ldd命令 在终端中输入ldd --version命令&#xff0c;然后按下回车键。这个命令会显示系统中安装的glibc版本号。例如&#xff0c;如果输出信息是ldd (GNU libc) 2.31&a…

AV1视频编解码简介、码流结构(OBU)

我的音视频/流媒体开源项目(github) 目录 一、AV1编码技术 二、AV1码流结构(OBU) 三、IVF文件格式 四、ffmpeg支持AV1 五、关于常见格式对AV1的封装 一、AV1编码技术 AV1是由开放媒体联盟(AOM&#xff0c;Alliance for Open Media)在2018年发布的&#xff0c;AV1的前身…

shell脚本练习(5)

一、需求&#xff1a;判断192.168.121.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 [rootopenEuler-1 script]# cat exist_IP.sh #!/bin/bash ######################### #File name:exist_IP.sh #Email:obboda163.com #Created time:2025-01-…

AI语音机器人大模型是什么?

AI语音机器人的大模型通常是指具有庞大参数规模和复杂结构的深度学习模型&#xff0c;这些模型能够处理大量数据并从中学习复杂的模式和关系&#xff0c;从而在语音识别、自然语言处理、语音合成等任务上表现出色。以下是AI语音机器人中大模型的具体介绍&#xff1a; 1.大模型…

【记录52】el-table-column 添加fixed属性 滚动条无法滑动

问题&#xff1a; el-table-column 添加fixed属性 滚动条无法滑动 使用element UI组件&#xff0c;用到el-table的el-table-column的fixed属性时&#xff0c;当滚动条长度小于固定列时&#xff0c;滚动条无法通过鼠标去点击滑动操作 原因 fixed是用来固定列的属性&#xff0c;其…