servlet

本文介绍了如何在IDEA中集成Tomcat服务器,详细讲解了servlet的编码步骤、执行过程、编写方式,包括GenericServlet和HttpServlet的选择,以及Servlet的生命周期和服务器向浏览器写数据的步骤。
摘要由CSDN通过智能技术生成

一安装tomcat

https://tomcat.apache.org/
在官网中下载tomcat
配置环境变量在pathy中%JAVA_HOME%/bin
(注意放在第一个不然容易闪退)

IDEA集成Tomcat服务器

第一步

在这里插入图片描述

第二步

在这里插入图片描述

第三步

在这里插入图片描述

常用状态码介绍:

状态码说明
200一切都OK>
302/307请求重定向(客户端行为,两次请求,地址栏发生改变)
304请求资源未发生变化,使用缓存
404请求资源未找到
500服务器错误

二编写servlet

1)编码步骤

第一步:前期准备-创建JavaWeb工程

第二步:编写一个普通类继承GenericServlet并重写service方法

第三步:在web.xml配置Servlet

public class FirstServlet extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("servlet的方法执行了");
    }
}
   <servlet>
        <servlet-name>firstServlet</servlet-name>
        <servlet-class>cn.xinzhi.servlet.FirstServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>firstServlet</servlet-name>
        <url-pattern>/first</url-pattern>
    </servlet-mapping>

启动程序:访问 localhost:8080/虚拟路径/first,最终执行了UserServlet的service方法

3 Servlet执行过程分析

我们通过浏览器发送请求,请求首先到达Tomcat服务器,由服务器解析请求URL,然后在部署的应用列表中找到我们的应用。接下来,在我们的应用中找应用里的web.xml配置文件,在web.xml中找到FirstServlet的配置,找到后执行service方法,最后由FirstServlet响应客户浏览器。

一句话总结执行过程:

浏览器——>Tomcat服务器——>我们的应用——>应用中的web.xml——>FirstServlet——>响应浏览器

4 Servlet的编写方式

第一种:实现Servlet接口,接口中的方法必须全部实现。 使用此种方式,表示接口中的所有方法在需求方面都有重写的必要。此种方式支持最大程度的自定义。

第二种:继承GenericServlet,service方法必须重写,其他方可根据需求,选择性重写。 使用此种方式,表示只在接收和响应客户端请求这方面有重写的需求,而其他方法可根据实际需求选择性重写,使我们的开发Servlet变得简单。但是,此种方式是和HTTP协议无关的。

第三种:继承HttpServlet,它是javax.servlet.http包下的一个抽象类,是GenericServlet的子类。如果我们选择继承HttpServlet时,只需要重写doGet和doPost方法,不要覆盖service方法。使用此种方式,表示我们的请求和响应需要和HTTP协议相关。也就是说,我们是通过HTTP协议来访问的。那么每次请求和响应都符合HTTP协议的规范。请求的方式就是HTTP协议所支持的方式(目前我们只知道GET和POST,而实际HTTP协议支持7种请求方式,GET POST PUT DELETE TRACE OPTIONS HEAD )。

5 servlet的生命周期

  • 生命周期
# 被创建:执行init方法,只执行一次
	– 在标签下配置
	1. 第一次被访问时,创建
		<load-on-startup>的值为负数,默认的是第一次访问的时候创建
	2. 在服务器启动时,创建
		<load-on-startup>的值为0或正整数,随着tomcat的启动创建
# 提供服务:执行service方法,执行多次
  
# 被销毁:执行destroy方法,只执行一次
	– Servlet被销毁时执行。服务器关闭时,Servlet被销毁
	– 只有服务器正常关闭时,才会执行destroy方法。
	– destroy方法在Servlet被销毁之前执行,一般用于释放资源
# 注意事项:
	Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
	多个用户同时访问时,可能存在线程安全问题。
	解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值

6 服务器向浏览器写数据的步骤

  1. 服务器获取字符/字节输出流
  2. 输出数据
	    response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>首页</TITLE>");
        out.println("</HEAD>");
        out.println("  <BODY>");
        out.print("<p style='color: red'>");
        out.print("这是个段落");
        out.print("</p>");
        out.println("  </BODY>");
        out.println("</HTML>");
        // flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满
        out.flush();
        out.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值