Servlet的具体使用方式以及http协议

主要介绍Servlet的基本创建和配置方法,以及http协议的相关知识,后面还有激活码工具
摘要由CSDN通过智能技术生成

在这里插入图片描述

一、Servlet概述

Servlet 是Java Server Applet的简称,称为小服务器程序,用Java编写的服务器端程序,主要功能交互式地浏览和修改数据,生成动态Web内容。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

Servlet编程需要使用到javax.servlet 和 javax.servlet.http两个包下面的类和接口,在所有的类和接口中,javax.servlet.Servlet 接口最为重要。所有的servlet程序都必须实现该接口或者继承实现了该接口的类。javax.servlet.ServletConfig;
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
javax.servlet.http.HttpSession;
javax.servlet.http.Cookie

二、Servlet使用,两种方式

2.1 继承HttpServlet

GenericServlet抽象类,实现了 Servlet, ServletConfig, Serializable三个接口,使编写 servlet 变得更容易。它提供生命周期方法 init 和 destroy 的简单实现,要编写一般的 servlet,只需重写抽象service 方法即可。

HttpServlet类,是【继承GenericServlet的基础上进一步的扩展】,提供将要被子类化以创建适用于 Web 站点的 HTTP servlet 的抽象类。HttpServlet 的子类至少必须重写一个方法,该方法通常是以下这些方法之一:

doGet,如果 servlet 支持 HTTP GET 请求
doPost,用于 HTTP POST 请求
doPut,用于 HTTP PUT 请求
doDelete,用于 HTTP DELETE 请求
init 和 destroy,用于管理 servlet 的生命周期内保存的资源 ,当服务器关闭,执行destroy方法
getServletInfo,servlet 使用它提供有关其自身的信息

一般我们只需要重写doPost和doGet方法即可。

具体步骤

1. 新建servlet类,直接右键新建

在这里插入图片描述

2. 在doGet方法里面调用doPost方法
@WebServlet(name = "MyServlet",value = "myservlet")
public class MyServlet extends HttpServlet {
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
    	//在doGet方法里面调用doPost方法
        doPost(request, response);
    }
}
3. 设置编码

web开发出现乱码的问题主要是两个地方:一个是从浏览器表单中接收的数据,一个是服务器向浏览器发送的数据。

接收数据

接收数据使用的是【getParameter】方法,要在doPost方法内书写。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
	String request.getParameter(String var1);	//var1是前端的变量名,或者表单的name, 返回的是value值
	String[] getParameterValues(String var1);	//返回的是数组,一般用于表单的多项选择,获取值
}

但是从前端获取的是utf-8编码的value,而服务器的request对象使用的是ISO8859-1(西欧编码集)这个字符编码来接收数据,浏览器和服务器沟通的编码不一致因此才会产生中文乱码的,所以使用【setCharacterEncoding】方法设置request编码

request.setCharacterEncoding("utf-8");

向浏览器响应数据
服务器向浏览器进行数据反馈响应,使用的是字节流和字符流的方法。
注意:字节流和字符流方法,只能二选一,不可同时用,一般传输音频、视频等需要字节流,文本使用字符流

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
	PrintWriter writer = response.getWriter();//字符流
	ServletOutputStream os = response.getOutputStream();//字节流
}

这样输出的结果是乱码,浏览器识别不到返回的中文是什么编码格式,就会默认使用GB2312,如果返回的是UTF-8格式的那么在浏览器上就会显示乱码的问题,问题出在浏览器上。需要使用【setContentType】方法设置response编码

//设置响应内容类型及编码,在响应报文中添加一个响应头 content-type:text/html;charset=utf-8
response.setContentType("text/html;charset=utf-8");
4. 给servlet配置url【核心】

必须配置servlet的url,用于html表单里面的【action】属性。
配置方式主要有两种:一种是注解,一种是配置WEB-INF下的【web.xml】文件

注解配置

注解类 【@WebServlet】,放到Servlet类的上面,主要属性:

name:serlvet名字 (可选)
value: 配置url路径,必须配置,value是数组,可以匹配多个url
urlPatterns:配置url路径 ,数组,可以匹配多个url,和value作用一样,不能同时使用
loadOnStartup:配置Servlet的创建的时机, 如果是0或者正数 启动程序时创建,如果是负数,则浏览器访问时创建,数子越小优先级越高,主要用于【init】方法
initParams:配置Servlet的初始化参数,可以在【init】方法中调取

Servlet中的url路径,共有四种方式:

注意有精确匹配优先精确匹配,否则模糊匹配

  1. 精确匹配:只有url路径是具体的名称的时候才会触发Servlet。
//必须有斜杠
@WebServlet(name = "MyServlet5",value = "/myservlet5")
  1. 模糊匹配——后缀匹配,只要是以某一后缀结尾的都可以运行
@WebServlet(name = "MyServlet4",urlPatterns 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值