zoukankan      html  css  js  c++  java
  • Servlet

    <--注:此博客只为了本人学习,不代表内容完全正确,请三思再看-->

    一、Servlet原理

     2、mapping

      1、一个servlet可以指定一个映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/sp</url-pattern>
    </servlet-mapping>

      2、一个servlet可以指定多个映射路径(但是没必要这么做,除非你闲出屁了)(尽量成对出现)

    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>space.urbeautiful.servlet.HelloServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/sp</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/sp1</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/sp2</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/sp3</url-pattern>
      </servlet-mapping>

      3、一个servlet可以指定通用映射路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/sp/*</url-pattern>
    </servlet-mapping>

      4、默认请求路径

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

      5、指定一些后缀或者前缀等等。。。

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    可以自定义后缀实现请求映射,注意点,*前面不能加项目映射的路径

      6、优先级问题

    指定了固有的映射路径,优先级最高。找不到就会走默认的处理请求

    二、ServletContext:上下文

    this.getContext()返回的是一个ServletContext对象

    用于上下文之间的通信,例如两个servlet之间怎样进行数据交流?

    笨方法可以是一个servlet将数据转成文件,另一个servlet读取文件进行交流

    现在又ServletContext上下文来操作,多个servlet之间的交流数据放在ServletContext中,其他的servlet来get

    多个servlet只用一个ServletContext,全局唯一。

     三、请求转发

    ServletContext context = this.getServletContext();
    resp.setContentType("text/html");
    resp.setCharacterEncoding("utf-8");
    context.getRequestDispatcher("/h3").forward(req,resp);//获得转发请求路径,转发

    四、读取资源文件

    读取资源文件

    思路:需要一个文件流来进行文件读取

    那就给它创建一个流

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
                Properties prop = new Properties();
                prop.load(is);
                String user = prop.getProperty("username");
                String pwd = prop.getProperty("password");
                resp.getWriter().print(user + ":" + pwd);
    }

    这就是context将一个要读取的文件变成流,从流中加载所需的内容

    五、Response重定向   resp.sendRedirect("重定向的地址");  注意路径问题

    面试题:请你聊聊转发和重定向的区别

    相同点:页面都会实现跳转

    不同点:请求转发的时候,url不会产生变化

    重定向的时候,url地址栏会发生变化

    六、Request请求

    HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,来获得客户端的所有信息。

  • 相关阅读:
    转载:一句代码改变Swing难看的字体
    生产者消费者问题c语言实现
    水题~~~~HDU 4788
    html中dom居中的5种方式
    scss中的三角函数
    nuxt基础Ⅱ
    nuxt基础Ⅰ
    win10软件安装出现错误代码2503/2502
    npm淘宝镜像安装
    axios的使用
  • 原文地址:https://www.cnblogs.com/jzspace/p/13082068.html
Copyright © 2011-2022 走看看