前言
什么是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是最简单一种
使用步骤 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");
}
获取数据的数据