zoukankan      html  css  js  c++  java
  • java-web中的web.xml中的servlet和servlet-mapping标签,及网页处理流程

    servlet的标签解释:servlet-mapping是一个映射标签,将url映射到servlet-class里面指定的具体类中,而两者servlet-name名字必须相同,servlet-mapping和servlet-class两者之间是通过

    servlet-name连接的,只用名字相同映射才能到达具体类,否则映射失败,url请求后台的java类就会无法处理。

    web.xml里面

    1 <servlet>
    2 <servlet-name>a</servlet-name>      <--! 里面随便写只要保持和servlet-mapping标签里的servlet-name里的值一样就行 -->
    3 <servlet-class>com.nan.LoginServlet</servlet-class>  <--! 要映射的具体包名和类名   所以这里填写  包名+类名 -->
    4 </servlet>
    5 <servlet>
    6 <servlet-name>a</servlet-name>    <--! 里面的值随便写 只要保持和servlet里面的 servlet-name标签里的值一样即可   因为servlet-name相当于servlet和servlet-mapping标签之间连接桥梁 -->
    7 <url-pattern>/qq</url-pattern>    <--! web.xml 的 / 表示的是http://localhost:8080/ + 工程名 -->
    8 </servlet>
    网页访问流程:
    1.首先前端输入url,如:

    请求为:见下图 1.1

    2.此时网页的请求发送到web.xml文件中 注意:前端输入的请求地址必须跟url-pattern相同,否则url-pattern无法捕获url请求

    url-pattern通过servlet-name标签找到这个请求实现的具体类---> servlet-class 里面的 LoginServlet类 进行具体处理 (java代码见下面) 2.2

    3.此时 java后台的Login-Servlet类处理完了请求之后,将返回在结果送入web.xml,再通过映射,从servlet-class映射到url-pattern将响应结果发送到前端页面 响应结果见下面截图 3.3

    1.1
    2.2
     1 package com.nan;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 public class LoginServlet extends HttpServlet{
    11     @Override
    12     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    13         String username= req.getParameter("username");
    14         String password = req.getParameter("password");
    15         resp.getWriter().print("用户名是:"+username);
    16         resp.getWriter().print("密码是:"+password);
    17     }
    18     @Override
    19     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20         doGet(req, resp);
    21     }
    22 }
    View Code
    3.3

    url-pattern 标签中的值是要在浏览器地址栏中输入的 url,可以自己命名,
    这个 url 将会访问名为 servlet-name 中值的 servlet,两个 servlet-name 标签的值必须相同,、
    因为通过 servlet 标签中的 servlet-name 标签映射到 servlet-class 标签中的值,
    最终访问 servlet-class 标签中的 class。
    还有,web.xml 的 / 表示的是http://localhost:8080/ + 工程名
    而.jsp页面的action,加了/表示绝对路径http://localhost:8080/ ,没有加 / 表示的是相对路径

    <--! 里面随便写只要保持和servlet-mapping标签里的servlet-name里的值一样就行 -->
  • 相关阅读:
    PAT顶级 1015 Letter-moving Game (35分)
    PAT顶级 1008 Airline Routes (35分)(有向图的强连通分量)
    PAT顶级 1025 Keep at Most 100 Characters (35分)
    PAT顶级 1027 Larry and Inversions (35分)(树状数组)
    PAT 顶级 1026 String of Colorful Beads (35分)(尺取法)
    PAT顶级 1009 Triple Inversions (35分)(树状数组)
    Codeforces 1283F DIY Garland
    Codeforces Round #438 A. Bark to Unlock
    Codeforces Round #437 E. Buy Low Sell High
    Codeforces Round #437 C. Ordering Pizza
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14151104.html
Copyright © 2011-2022 走看看