JSP跳轉到Servlet的兩種配置


一、servlet注解

servlet3.0支持使用@WebServlet注解來實現JSP到servlet的跳轉,此方法不需要配置項目中的web.xml文件。

Test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TEST</title>
</head>
<body>
<form action="TestServlet" method="post">
<input type="text" name="text">
<input type="submit">
</form>
</body>
</html>

TestServlet.java

package test;

import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class TestServlet
 */ @WebServlet("/TestServlet") public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    public GameDao() {
        super();
        
    }

    protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
        System.out.println(request.getParameter("text"));
        response.sendRedirect("Test.jsp");
    }

}

 也可以使用@WebServlet提供更多信息,如以上的@WebServlet可以改為

@WebServlet(
    name="testServlet",
    urlPatterns="/TestServlet",
    loadOnStartup=1 )

上面的@WebServlet告知web容器:

這個Servlet的名稱是testServlet,這是由name屬性指定的(name屬性如果沒有指定則默認為Servlet類完整名稱);

如果客戶端請求的URL是/TestServlet,則由具有testServlet名稱的Servlet來處理,這是由urlpatterns屬性來指定的;

當應用程序啟動后,事實上並沒有創建所有的Servlet實例。容器會在首次請求需要某個Servlet服務時,才將對應的Servlet類實例化,進行初始化操作,然后在處理請求。這意味着第一次請求該Servle的客戶端,必須等待Servlet類實例化,進行初始動作所必須花費時間,才真正得到請求的處理。

如果希望應用程序啟動時,就把Servlet類載入,實例化並做好初始化動作,可以使用loadOnStartup設置。設置大於0的值(默認值-1),表示啟動應用程序后就要初始化Servlet(而不是實例化幾個Servlet)。數字代表了Servlet的初始順序,容器必須保證有較小數字的Servlet先初始化,在使用標注的情況下,如果有多個Servlet在設置loadOnStartup時使用了相同的數字,則容器實現廠商可以自行決定要如何載入哪個Servlet。

二、配置web.xml

適用范圍廣泛,可以更方便的修改地址映射,便於管理跳轉地址等。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>跳轉測試</display-name>
  <servlet>
    <servlet-name>Test</servlet-name>
    <servlet-class>test.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

web.xml配置詳解:https://www.cnblogs.com/chinafine/archive/2010/09/02/1815980.html

<servlet>標簽里的<servlet-name>標簽表示的是自定義的一個servlet名,叫啥都行,只要和下邊的<servlet-mapping>標簽里的<servlet-name>標簽一致就行。

<servlet>標簽里的<servlet-class>標簽里需要填寫的是servlet的本地位置,比如這里的test.TestServlet表示的就是下邊對應網址需要使用的類為TestServlet,而這個servlet類在test包內。

<servlet-mapping>標簽里的<url-pattern>標簽表示的是需要攔截的網址,比如這里的/TestServlet表示的就是攔截http://127.0.0.1:8080/Test/TestServlet這個網址。只要跳轉到這個網址,服務器就會攔截請求,將請求發送給上邊配置的servlet。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM