1.servlet3.0作为J2EE 6规范一部分,随j2EE6一起发布,并且tomcat7已经完全支持。
2.tomcat7(tomcat7 需要jdk1.6支持)已经完全支持servlet3.0,
3.web项目中添加对servlet3.0支持,
将E:\apache-tomcat-7.0.26\lib下的jar包加入到web项目
classpath中,可以不不加到web项目中WEB-INF/lib,保证编译时可用就行,部署到tomcat中,tomcat
会使用自己servlet3.0支持的jar.完成后,将eclipse默认生成servlet2.5支持jar移除
4.修改WebRoot\WEB-INF\web.xml dtd文件,使其支持servlet3.0
将tomcat7/conf/web.xml覆盖即可,删除不相关的部分,修改后的web.xml(主要是dtd)内容为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
5.5.编写第一个servlet3.0的servlet,和之前差不了,就是用注解
package com.darren.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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;
@WebServlet(name="FirstServlet",urlPatterns={"/firstServlet","/MyServlet"},initParams={@WebInitParam(name="hello",value="world init....")})
@WebInitParam(name="paraName",value="paraValue")
public class FirstServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println(config.getInitParameter("paraName"));
System.out.println(config.getInitParameter("hello"));
//super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("hello,world...");
out.close();
}
}
参数也通过注解方式传入,有什么意义呢?声明成常量直接用好了;另外通过这种方式注解@WebInitParam(name="paraName",value="paraValue"),servlet里,死活拿不到,不知道为啥?
通过注解,web.xml不需要配置servlet,实现了零配置