1.Servlet3.0 的 web.xml
metadata-complete web-app元素的屬性
設置爲true 將不支持註解技術
不設置 或者 設置爲false 將支持註解 技術
2.提供Servlet註解技術
@WebServlet
@WebFilter
@WebInitParam
@WebListener
1)簡單的分析:
1.使用註解來替換配置文件
@WebServlet(“/hello”) 用於配置servlet
@WebFilter(“/*”) 用於配置Filter
@WebListener 用於配置Listener
**關於這些註解細節:
以@WebServlet("/hello") 爲例
注意:屬性urlpatterns與values它們都是描述訪問當前servlet的路徑,但它們不能一起出現,只能使用一個.
<servlet>
<servlet-name></servlet-name> String name() default "";
<servllet-class></servlet-class>
<init-param> WebInitParam[] initParams() default {};
<param-name>
<param-value>
</init-param>
<load-on-startup> int loadOnStartup() default -1;
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern> String[] urlPatterns() default {}; String[] value() default {};
</servlet-mapping>
在servlet中怎樣獲取初始化參數
ServletConfig對象獲取
在web.xml文件中的屬性 metadata-complete,可以取值爲true,false,
如果爲false,代表servlet3.0中的註解可以使用,如果爲true,代表不可以使用註解。**
package cn.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 手動創建servlet
*/
@WebServlet(urlPatterns = {"/hello", "/h"}, initParams = {@WebInitParam(name = "username", value = "tom"), @WebInitParam(name = "encode", value = "utf-8")})
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("helloWorld");
//獲取初始化參數
ServletConfig config = this.getServletConfig();
//獲取username
String username = config.getInitParameter("username");
System.out.println(username);
//獲取encode
String encode = config.getInitParameter("encode");
System.out.println(encode);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}