Servlet
一、Servlet作用
通过编写一个Java类来实现servlet接口,再把开发好的Java类部署到web服务器中,便可实现web资源动态化。简单来讲,Servlet 让我们的普通 Java 程序能够处理浏览器的访问并返回相应的内容。
二、Web服务器是什么
是指应用程序,对HTTP协议的操作进行封装,使程序员不必直接对协议进行操作,让web开发更加便捷。主要功能是“提供网上信息浏览服务”。
1.HTTP
HTTP超文本传输协议,规定了浏览器和服务器之间的数据传输的规则。
2.TCP
TCP传输控制协议,使用UDP发送数据容易丢失,而TCP能够保证数据稳定传送。
3.用户访问网页过程
- 与服务器建立TCP连接;
- 发送HTTP请求;
- 收取HTTP响应,然后把网页在浏览器中显示出来。
实际上web服务器虽能代劳许多协议的操作,但仍有部分问题会降低开发效率,所以,Servlet 应运而生。
三、Web服务器的作用
1:封装HTTP协议操作,简化开发
2:可以将web项目部署到服务器中,对外提供网上浏览操作
四、Tomcat
Tomcat是应用广泛的java服务器,一个免费开源的轻量级服务器。
1.Tomcat下载与项目创建
官网链接:
下载64位的核心后解压文件,使用IDEA创建新项目,选择Jakarta EE作为生成器,模板选择Web应用程序,应用程序服务器新建Tomcat服务器并选取对应下载解压后的文件路径。
2.运行环境配置
此处应保证应用程序服务器选择对象存在非空,虚拟机栏中填写图中语句可统一Tomcat与IDEA的编码以防出现乱码,Tomcat默认是UTF-8,IDEA看版本。
通过System.out.println(System.getProperty("file.encoding"));可查询当前IDEA采用的编码。
成功运行
3.运行后出现中文乱码
进入设置更改全局编码
若还行不通,在自定义虚拟机选项最后也同样加上前面提到的语句
若还是行不通,请检查下载的tomcat文件中图中路径下的logging文件
检查所有encoding后面是否是UTF-8
若也无误,那只能直接对IDEA文件进行修改了,具体修改的文件需上网查询,我也不清楚
五、使用Tomcat编写一个程序
1.文件目录
创建完一个项目后,先观察一下左边的目录
先介绍说明一下几个重要文件的作用:
src:用于存放源代码和测试代码的根目录
main:用于存放源代码的目录
test:用于存放测试代码的目录
java:用于存放Java代码的目录
resources:用于存放依赖的资源文件
pom.xml:是 Maven项目的核心配置文件,关于这个Maven项目的相关属性,都是在这个xml中进行配置
2.引入依赖
运行程序需要先在xml文件中引入Servlet API依赖的jar包,需要打开中央仓库,搜索Servlet,点击Java Servlet API并下载所使用Tomcat对应版本的Servlet,再把该版本的xml复制到自己创建项目的xml文件中。
图中框红的部分就是依赖
3.编写代码
package com.example.demo;
import java.io.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
@WebServlet(name = "helloServlet", value = "/hello-servlet")
//使用@webservlet注解,配置servlet的访问路径
public class HelloServlet extends HttpServlet {
/*Servlet类是指继承HttpServlet类的普通Java类,覆盖doGet方法,且只能由tomcat服务器运行
PS:HttpServlet类来自于pom.xml中引入的Servlet API依赖的jar包
*/
private String message;
public void init() {
message = "Hello World!";
}//当Servlet第一次被请求时,Servlet容器会调用该方法初始化一个Servlet对象且后续不再被调出
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
//声明了request和response这两个对象
response.setContentType("text/html");
/*重写doGet()方法,声明写入的内容形式是html
PS:doGet是HttpServlet类中的方法,此处是在子类HelloServlet中重写了父类的方法
*/
PrintWriter out = response.getWriter();
/*获得一个流对象,通过这个流对象就可以写入一些数据,写入的数会被构造成一个 HTTP 响应的 body 部分,
Tomcat 会把整个响应转成字符串,通过 Socket 写回给浏览器
*/
out.println("<html><body>");
out.println("<h1>" + message + "</h1>");
out.println("</body></html>");
//写入具体的html代码内容
}
public void destroy() {
}//被调用时销毁先前创建的Servlet对象释放空间
}
MVC结构
M:Model,模型持有所有的数据、状态和程序逻辑;
V:View,视图,界面展示,与用户的交互功能;
C:Controller,控制器,处理请求,调用模型和视图;
Cookie
不是曲奇,简而言之这玩意儿就是键值对,可以在浏览器和用户端进行一个交换信息的操作,使得我们有时在初始化的时候就可以直接通过电脑中存储的Cookie码进行自动的认证。
用处:减少用户操作的时间和次数提高效率。
Session
session是由服务器创建进行分发的,将session的值存储在服务器内部,并只提供sessionid进行外界的使用。因此,合理有用session可以使程序的安全性提升。具体操作过程和cookie类似。