Servlet学习总结

HTTP(复习)

  1. HTTP的会话方式
  • 建立连接
  • 发出请求信息
  • 回送响应信息
  • 关闭连接
  1. HTTP请求消息结构
GET /books/java.html HTTP/1.1  # 请求行
# 消息头
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer: Http://localhost/links.asp
User-Agent:Mozilla/4.0
Accept-Encoding: gzip, deflate
# 一个空行

# 实体内容

3.请求GET和POST

  • 使用get方式传递参数
    • 在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET.
    • 网页表单form的method属性显示被设置成“GET”.
    • get方式传送的数据量一般限制在1KB以下.
  • 使用post方式传递参数
    • form的method参数为POST
    • post传送数据量更大

servlet

Servlet简介
`- java Servlet是平台无关的服务器端组件,它运行在servlet容器中。其负责Servlet和客户的通信以及调用Servlet的方法,通信模式为“请求/响应”。

  • 创建一个servlet的方法
    • 实现一个Servlet的实现类

      package com.web;
      import javax.servlet.*;
      
      public class HelloServlet implements Servlet {
      
          public void init(ServletConfig config){
              System.out.println("init");
          }
      
          public void service(ServletRequest req, ServletResponse res){
              System.out.println("Hello Servlet!");
          }
      
          public void destroy(){
              System.out.println("destroy");
          }
      
          public String getServletInfo(){
             return "";
          }
      
          public ServletConfig getServletConfig(){
              return null;
          }
      }
      
    • 配置web.xml

          <servlet>
          <!-- Servlet注册名字 -->
              <servlet-name>helloServlet</servlet-name>
              <!--Servlet全类名-->
              <servlet-class>com.web.HelloServlet</servlet-class>
              <!--可以指定Servlet被创建的时机,大于0表示Serlver容器加载时创建实例,值越小越先创建(>=0)。负数表示不提前创建,在第一层请求时被创建。-->
              <load-on-startup>1</load-on-startup>
          </servlet>
      
          <servlet-mapping>
              <servlet-name>helloServlet</servlet-name>
              <!--映射的访问路径, 其中/代表当前web应用的根目录-->
              <url-pattern>/helloServlet</url-pattern>
          </servlet-mapping>
      
  • Servlet容器
    • 可以创建Servlet, 并调用Servlet, JSP, Fiter等软件环境
    • JST,Filter, Listener, Tag…
  • Servlet生命周期的有关方法
    • 构造器:第一次请求Servlet时,创建Servlet的实例,调用构造器。单实例的!
    • init:只被调用一次,用于初始化当前Servlet
    • service:多次调用,每次请求都会调用service.
    • destroy:在当前servlet所在的web应用被卸载时调用。用于释放当前servlet所占资源。
  • Servlet容器响应客户请求的过程
    • Servlet引擎检查是否以及装载并创建了该Servlet的实例对象,如果是则跳到第4步,否则第二步。
    • 装载并创建该Servlet的一个实例对象: 调用该Servlet的构造器。
    • 调用Servlet的init()方法
    • 创建一个封装了ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用service方法并将响应和请求参数传递进去。
    • Web应用程序被停止或重新启动前,servlet引擎卸载Servlet,并在卸载Servlet之前调用destroy()方法。
  • Servlet的映射细节
    • 同一个Servlet可以被映射到多个URL上,如:
    <!--以/开头并以/*结尾-->
    <url-pattern>/*</url-pattern>
    <!--"*.扩展名"-->
    <url-pattern>*.html</url-pattern>
    
    • “/”开头和以“/*”结尾用于做路径映射
    • 以"."开头用来做扩展映射
    • "/"用来做default servlet映射
      (参考:https://blog.csdn.net/zhuboming/article/details/79627445)
  • ServletConfig
    • 封装了serlvet的配置信息,并且可以获取ServletContex对象

      1. 配置默认参数

        <!--配置Servlet参数-->
        <init-param>
        <param-name>user</param-name>
        <param-value>root</param-value>
        <init-param>
        
      2. 获取参数

        String servletConfig.getInitParameter("String"); # 获取指定参数名的参数
        Enumeration<String> servletConfig.getInitParameterNames(); # 获取参数名
        
      3. 获取servletname

        servletConfig.getServletName()
        
      4. 获取servlet的上下文环境

        ServletContext getServletContext();
        

        例如:web.xml中获取参数driver的值可以按如下方法,

        <!--当前web应用的初始化参数-->
        <context-param>
            <param-name>driver</param-name>
            <param-value>com.mysql.jdbc.Driver</param-value>
        </context-param>
        
        ServletContext sc = servletConfig.getServletContext();
        String driver = sc.getInitParameter("driver");
        
    • ServletRequest和ServletResponse

      • ServletRequest:封装了请求信息,可以重中获取任何请求信息
        1. String getParameter(String name);
        2. Map getParameterMap();
        3. Enumeration getParameterNames;
        4. String[] getParameterValues(String name) ;
        5. 获取请求的URI: httpServletRequest.getRequestURI();
        6. 获取get方法请求string:httpServletRequest.getQueryString();
        • 其中HttpServletRequest是SerlvetRequest的子接口,里面包含了大量获取HTTP请求的方法。
      • ServletResponse: 封装了响应信息,给用户响应(用的不多)
        1. getWriter() 返回一个PrintWriter对象
        2. setContentType() 设置响应类型
        3. HttpServletResponse.sendRedirect(String location): 请求重定向
    • GenericServlet

      • 实现了Servlet接口的抽类,实现该方法更简单,只需要重写service.
    • HttpServlet

      • doGet
      • doPost
        只需要重写这个两个方法进行请求处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值