JavaWeb——如何找到相应Servlet类及其方法

为了更好地了解如何找到相应的Servlet,我们先建立在一个Web项目下建立三个文件,分别是index.jsp,DataServlet.java,target.jsp,同时打开项目下的web.xml文件,其内容分别如下

整体项目展示图:
JavaWeb——如何找到相应Servlet类及其方法_第1张图片
注意:别忘了将jar包servlet-api.jar添加入WEB-INF的lib文件夹中

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>开始title>
	head>
	<body>
		<a href="./DataServlet">链接a>
	body>
html>

DataServlet.java:

package com.jd;

import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DataServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
		
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		System.out.println("service");
		super.service(arg0, arg1);
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet");
		response.sendRedirect("target.jsp");
	}	
}

target.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title heretitle>
	head>
	<body>
		OK
	body>
html>

web.xml:


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Servletdisplay-name>
  <welcome-file-list>
    <welcome-file>index.htmlwelcome-file>
    <welcome-file>index.htmwelcome-file>
    <welcome-file>index.jspwelcome-file>
    <welcome-file>default.htmlwelcome-file>
    <welcome-file>default.htmwelcome-file>
    <welcome-file>default.jspwelcome-file>
  welcome-file-list>
  <servlet>
    <description>description>
    <display-name>DataServletdisplay-name>
    <servlet-name>DataServletservlet-name>
    <servlet-class>com.jd.DataServletservlet-class>
  servlet>
  <servlet-mapping>
    <servlet-name>DataServletservlet-name>
    <url-pattern>/DataServleturl-pattern>
  servlet-mapping>
web-app>

发布项目之后,
两个JSP文件各生成两个Web页面,由于index.jsp文件中a标签的href="./DataServlet",所以点击链接按钮时应该进入DataServlet.java文件中。但是程序是如何知道要进入哪个文件中呢(即进入哪个类重)?大致可以分为三个步骤:

①a标签中的href后跟的路径对应的是web.xml文件中 标签下的/DataServlet标签及其包含内容,然后就可以得到 标签下的DataServlet标签及其内容
②第二步就是依据标签下的DataServlet标签及其内容再找到< servlet>标签下的DataServlet标签及其内容
③第三步找到< servlet>标签下的 com.jd.DataServlet标签及其内容,此内容即是相应的Servlet文件路径,最后依据此路径找到相应的Servlet文件

进入相应的Servlet类中以后,如何辨别是用其中的doPost方法还是doGet方法呢?这由Servlet类的父类HttpServlet中的service方法决定,其中有两个service方法,选哪一个都行。需要知道的是a标签的href属性默认调用的是doget方法。我在DataServl类中重写了父类中的service方法,并加入了System.out.println(“service”)语句,同时在doGet方法中加入System.out.println(“doGet”)语句,这些准备都是为了证明在运行此Servlet类时这些方法都得到了使用。

此时项目已经发布,当我点击页面中的链接按钮时,由于DataServlet.java文件中doGet方法中有response.sendRedirect(“target.jsp”);语句,意思是访问target.jsp文件,所以应该转到内容为OK的属于target.jsp的页面

JavaWeb——如何找到相应Servlet类及其方法_第2张图片
JavaWeb——如何找到相应Servlet类及其方法_第3张图片

点击链接按钮后的控制台输出图:
JavaWeb——如何找到相应Servlet类及其方法_第4张图片

可以看出点击链接按钮后控制台输出了service和doGet,这说明程序运行过程中经过了DataServlet类和其中的service方法和doGet方法。这就是javaWeb工程中程序如何找到Servlet类及其方法的过程。

你可能感兴趣的:(JavaWeb——如何找到相应Servlet类及其方法)