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

前言

什么是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");    //定义 数据返回的 类型

        // Hello
        PrintWriter 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");

        // Hello
        PrintWriter 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 注册驱动,获取数据库连接Connection
    Connection    数据库连接,获取传输器Statement
    Statement     传输器执行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是不能直接进行语句的执行 需要使用statement
       Statement 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");

       }

获取数据的数据

相关推荐
leegong2311131 分钟前
如何备考PostgreSQL中级认证
数据库·postgresql
赵渝强老师36 分钟前
【赵渝强老师】什么是NoSQL数据库?
数据库·nosql
ifanatic1 小时前
[每周一更]-(第131期):Go并发协程总结篇
开发语言·数据库·golang
csdn5659738501 小时前
SQL分类与数据类型整理
数据库·sql·oracle
MrZhangBaby1 小时前
SQL-leetcode-584. 寻找用户推荐人
数据库·sql·leetcode
骚戴1 小时前
Navicat连接Oracle报错:ORA-12638: 身份证明检索失败的解决方法
数据库·oracle
经常喝假酒的胡小臣2 小时前
Django学习笔记之数据库(一)
数据库·学习·django
肉三2 小时前
安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?
运维·servlet·jenkins
Elastic 中国社区官方博客2 小时前
Elasticsarch:使用全文搜索在 ES|QL 中进行过滤 - 8.17
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索
凉秋girl2 小时前
Redis常见知识点
数据库·redis·缓存