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);
}
}