Servlet

Servlet是Java编程中的一个核心概念,用于构建Web应用程序。Servlet API定义了Servlet与容器之间的交互接口,包括ServletRequest、ServletResponse、ServletConfig和ServletContext等。在Servlet生命周期中,容器调用init、service和destroy方法。HttpServlet是Servlet的子类,通常覆盖doGet和doPost方法来处理HTTP请求。HttpServletRequest和HttpServletResponse提供了处理HTTP特定操作的方法,如获取请求参数和设置响应头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet

Servlet是一个Java程序,一个Servlet应用应该包含一个或多个Servlet程序。JSP页面会转换和编译成Servlet程序
Servlet应用必须运行在Servlet容器中(Tomcat、Jetty等),Servlet容器将用户的请求传递给Servlet应用,并将结果返回给用户

Servlet API

  • javax.servlet,Servlet和Servlet容器之间契约的接口
  • javax.servlet.http,HttpServlet和Servlet容器之间契约的接口
  • javax.servlet.annotation,包含Servlet、Filter、Listener的标注
  • javax.servlet.descriptor,提供程序化登录Web引用程序的配置信息的类型

Servlet

Servlet技术核心是Servlet,Servlet是每个Servlet程序直接或间接必须实现的接口。
用户的请求会使Servlet容器调用Servlet的Service方法,并传入一个ServletRequest实例和ServletResponse实例。ServletRequest封装了当前的Http请求,ServletResponse表示当前用户的响应。

Servlet接口包含5个方法:

void init(ServletConfig config)throws ServletException
void service(ServletRequset request,ServletResponse response)throws ServletException,java.io.IOException
void destroy()
java.lang.String getServletInfo() :返回Servlet的描述,返回有用的字符串或null
ServletConfig getServletConfig():返回由Servlet容器提供给init方法的ServletConfig

ServletRequest

对于每一个Http请求,Servlet容器都会创建一个ServletRequest实例,并将它传给Servlet的Sevice方法。ServletRequest封装了关于这个请求的信息
ServletRequest接口的一些常用方法:

  • public java.lang.String getContentType():返回请求主体的MIME(Multipurpose Internet Mail Extensions多用途互联网邮件扩展类型类型),如果不知道,返回null
  • public java.lang.String getParameter(java.lang.String name):返回请求参数的值

ServletResponse

javax.servlet.ServletResponse接口表示一个Servlet响应,存储了Servlet容器返回给用户的数据
ServletResponse接口的一些常用方法:

  • public java.io.PrintWriter getWriter() throws IOException:返回了一个可以向客户端发送文本的java.io.PrintWriter,默认情况,PrintWriter对象使用的是ISO-885901编码
  • public void setContentType(java.lang.String var1):设置响应内容的类型。例如在发送任何HTML标签时,首先调用该方法,设置参数为”text/html”,浏览器默认将其渲染成HTML
  • void setCharacterEncoding(java.lang.String var1):设置Servlet容器响应的编码方式。若想给用户传递中文信息,可以在获取PrintWriter对象之前更改编码方式:
    response.setCharacterEncoding("UTF-8");
    PrintWriter writer=response.getWriter();

ServletConfig

当Servlet容器初始化Servlet,Servlet容器会给Servlet的init方法传入一个ServletConfig。通过ServletConfig对象,可以设置Servlet的初始化参数。ServletConfig封装可以通过@WebServlet或者部署描述符传给Servlet的配置信息(初始化参数,有一个key和value元件)

@WebServlet(name="ServletConfigDemo",
urlPatterns = {"/servletConfigDemo"},
initParams = {
        @WebInitParam(name="admin",value="***"),
        @WebInitParam(name="email",value="**@*.com")
})

ServletConfig的方法:

  • String getServletName():获取Servlet名
  • ServletContext getServletContext():获得ServletContext
  • String getInitParameter(String var1):获取该参数名的参数值
  • Enumeration getInitParameterNames():返回所有参数的名称

ServletContext

ServletContext表示Servlet应用程序,每个Web应用程序只有一个上下文
作用:共享从应用程序中的所有资料处所访问到的信息,将对象保存在ServletContext中的一个内部Map中,保存在ServletContext中的对象被称作属性
下列方法用来处理属性:

  • Object getAttribute(String name)
  • Enumeration getAttributeNames()
  • void setAttribute(String name,Object object)
  • void removeAttribute(String name)

HttpServlet

Servlet—>GenericServlet(抽象类,实现了Servlet接口)—>HttpServlet(继承了GenericServlet)

HttpServlet中的Service方法会检验用来发送请求的HTTP方法(通过调用request.getMethod),调用以下方法之一:doGet,doPost,doHead,doPut,doTrace,doOptions,doDelete。doGet和doPost最为常用,不再需要覆盖Service方法,只需覆盖doGet或doPost即可。

HttpServletRequest

扩展了javax.servlet.ServletRequest接口,新增方法:

  • String getContextPath():返回表示请求上下文的请求URI部分
  • Cookie[] getCookies():返回一个Cookie数组
  • String getHeader(String name):返回指定的HTTP标题的值
  • String getMethod():返回生成这个请求的HTTP方法的名称
  • HttpSession getSession():返回与这个请求相关的会话对象,没有则创建一个新的会话对象

HttpServletResponse

  • void addCookie(Cookie cookie):给这个响应添加一个cookie
  • void addHeader(String name,String value):给这个响应对象添加一个header
  • sendRedirect(String location):发送一条响应码,将浏览器跳转到指定的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值