• Servlet/JSP-02 Servlet相关类


    ServletConfig / ServletContext / ServletRequest / ServletResponse

    一. ServletConfig:封装了Servlet得配置信息,并且可以获取ServletContext对象。

    1 获取初始化参数

      a. 配置初始化参数

    <servlet>
          <servlet-name>helloServlet</servlet-name>
          <servlet-class>com.bwr.start.HelloServlet</servlet-class>
        <!-- init-param节点必须在load-on-startup前 --> <init-param> <param-name>encode</param-name> <param-value>utf-8</param-value> </init-param>
        <init-param>
    <param-name>encode</param-name>
    <param-value>utf-8</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

      b. 获取初始化参数

        getInitParamter(String name)   获取Servlet指定名称的初始化参数

        getInitParameterNames()    获取Servlet中所有的初始化参数名的枚举值

           public void init(ServletConfig config) throws ServletException {
            System.out.println("init...");
            String name = config.getInitParameter("name");
            System.out.println("name: " + name);
            
            Enumeration<String> params = config.getInitParameterNames();
            while(params.hasMoreElements()) {
                String param = params.nextElement();
                String value = config.getInitParameter(param);
                System.out.println(">> " + param + ": " + value);
            }
        }    

        Servlet加载时后台输出结果:

    name: tom
    >> encode: utf-8
    >> name: tom

    2  获取Servlet名称   getServletName()

    3  获取Servlet上下文 getServletContext()

    二. ServletContext

      1.Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,在Servlet中可以通过ServletConfig的getServletContext()方法获取。

      2.由于一个WEB应用中所有Servlet共享同一个ServletContext对象,所以也被称之为application对象(WEB应用程序对象)

      3.可以通过ServletContext获取当前WEB应用各方面的信息:

      ① 获取当前WEB应用初始化参数

        配置:在web.xml文件的web-app标签下配置

      <context-param>
          <param-name>web-name</param-name>
          <param-value>Hello</param-value>
      </context-param>
      <context-param>
          <param-name>version</param-name>
          <param-value>2.2.1</param-value>
      </context-param>

        获取:通过ServletContext的getInitParamter(String name)和getInitParamterNames()获取。

      ② 获取当前WEB应用的某个文件的绝对路径

        a.文件必须位于WEB应用内,即在项目的WebContent下;获取的绝对路径是应用部署后文件所在的绝对路径

        b. 使用方法servletContext.getRealPath("/note.txt"),"/"在eclipse项目结构中代表WebContent

      ③ 获取当前WEB应用的名称

        servletContext.getContextPath()  // "/JavaWeb01"

      ④ 获取当前WEB应用某个文件对应的输入流

        servletContext.getResourceAsStream(String path);  // path前的"/"为WEB应用的根目录

        a.在eclipse项目下src下有文件db.properties

           ServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");

           getClass().getClassLoader().getResourceAsStream("db.properties");

        b.在eclipse项目下WebContent下有文件note.txt

          ServletContext().getResourceAsStream("/note.txt"); 

      ⑤ 与Attribute相关的方法(后文详述) 

    引子:如何在Servlet中获取请求信息?

        Servlet的service方法用于应答请求,每次请求都会调用service方法:

        public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException

      ServletRequest:封装了请求信息,从中可以获取任何请求信息

      ServletResponse:封装了响应信息,可以通过它想用户传递响应

      上述二者都是由Servlet容器实现,并传递给service方法

    三. ServletRequest

    1.获取请求参数

      String getParamter(String name)  

        根据请求参数名称获取参数值,若请求参数有多个值(checkbox)只能获取第一个值

      String[] getParameterValues(String name)

        用于获取请求参数有多个值的情况

      Map getParamterMap() 

        获取参数名和参数值的键值对Map<String, String[]>

      Enumeration getParameterNames()

          获取请求参数名对应的Enumeration

    -- 以下为HttpServletRequest的方法

    2.获取请求的URL

      HttpServletRequest.getRequestURL()

    3.获取请求方法

      HttpServletRequest.getMethod()

    4.获取GET请求的查询字符串

      HttpServletRequest.getQueryString()

    5.获取请求的Servlet的映射路径

      HttpServletRequest.getServletPath()  //web.xml配置的url-pattern

    6.与Attribute相关的方法(后文详述)

    四. ServletResponse

    1. ServletResponse.getWriter()

      返回PrinterWriter对象,调用该对象的print()方法,可以把内容直接显示到浏览器上

    2.ServletResponse.setContentType(String type)

      设置响应类型, setContentType("application/msword")  输出word文档,具体类型可到tomcat下得web.xml文件中查询

    3.ServletResponse.getOutputStream()  

      获取文件输出流

    4.HttpServletResponse的方法在后文HttpServlet中描述,例如sendRedirect(String location)

  • 相关阅读:
    maven 错误:HttpServlet was not found on the Java
    maven 配置Project Facets时further configuration available不出来问题
    maven 解决Cannot change version of project facet Dynamic web module to 2.5
    maven 怎么在MyEclipse中打开Navigator视图
    maven web项目不能创建src/main/java等文件夹的问题
    Maven 使用Eclipse构建Maven的SpringMVC项目
    Maven 异常:Project configuration is not up-to-date with pom.xml解决方案
    Eclipse 配置Maven以及修改默认Repository
    Android Java Mail与Apache Mail发送邮件对比
    Android JavaMail介绍及发送一封简单邮件
  • 原文地址:https://www.cnblogs.com/techroad4ca/p/5484093.html
Copyright © 2020-2023  润新知