1. 程式人生 > >關於servlet3.0版本java dynamic web工程中找不到web.xml的問題

關於servlet3.0版本java dynamic web工程中找不到web.xml的問題

寫了一個form.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 align="center">Beer selection Page</h1>
<form method="post"  action="Beerselect.do">
Select beer characteristics<p>
Color:
<select name="color" size="1">
    <option>light
    <option>amber
    <option>brown
    <option>dark
    </select>
<br><br>
    <center>
         <input type="SUBMIT">
    </center>
</form>
</body>
</html>

一個servlet  Beerselect.java:

package com.example.web;

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

/**
 * Servlet implementation class Beerselect
 */
@WebServlet("/Beerselect.do")


public class Beerselect extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Beerselect() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("Beer Selection Advice<br>");
        String c = request.getParameter("color");
        out.println("<br>Got beer color" + c);
    }

}

要想訪問form.html,點選submit按鈕之後出現Beerselect生成的頁面,一般在web.xml配置,常見web.xml配置:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_3_1.xsd"
    version="3.1">
    
    <Servlet>
        <Servlet-name>Beerselect</Servlet-name>
        <Servlet-class>com.example.web.Beerselect</Servlet-class>
    </Servlet>
    <Servlet-mapping>
        <servlet-name>Beerselect</servlet-name>
        <url-pattern>/Beerselect.do</url-pattern>
    </Servlet-mapping>
</web-app>

當你訪問/Beerselect.do時,web.xml將/Beerselect.do對映到Beerselect.java.

可是servlet3.0版本,你將找不到web.xml. 那麼這些配置放在哪裡呢?

我們可以看到Beerselect.java裡有一行:

@WebServlet("/Beerselect.do"),它指定了這個servlet的<url-pattern>/Beerselect.do</url-pattern>

一般@WebServlet()會這樣:

@WebServlet(urlPatterns = {"/Beerselect.do"}, asyncSupported = true, 
loadOnStartup = -1, name = "BeerServlet", displayName = "bs", 
initParams = {@WebInitParam(name = "username", value = "tom")} 
) 
@WebServlet 主要屬性列表
屬性名型別描述
nameString指定 Servlet 的 name 屬性,等價於 <servlet-name>。如果沒有顯式指定,則該 Servlet 的取值即為類的全限定名。
valueString[]該屬性等價於 urlPatterns 屬性。兩個屬性不能同時使用。
urlPatternsString[]指定一組 Servlet 的 URL 匹配模式。等價於 <url-pattern> 標籤。
loadOnStartupint指定 Servlet 的載入順序,等價於 <load-on-startup> 標籤。
initParamsWebInitParam[]指定一組 Servlet 初始化引數,等價於 <init-param> 標籤。
asyncSupportedboolean宣告 Servlet 是否支援非同步操作模式,等價於 <async-supported> 標籤。
descriptionString該 Servlet 的描述資訊,等價於 <description> 標籤。
displayNameString該 Servlet 的顯示名,通常配合工具使用,等價於 <display-name> 標籤。