Servlet3.0作为J2EE6.0规范的一部分,随J2EE6.0一起发布,并且Tomcat7.0已经完全支持Servlet3.0.
在Eclipse中不再需要web.xml配置servlet,而通过注解的方式找寻servlet。
1) Eclipse中创建Web项目
我们在tomcat7.0环境下创建支持servlet3.0的项目HelloWorld。
2) 不用勾选创建web.xml复选框。当然勾选也可以生成web.xml,但是没有必要~~
3) 创建Servlet:HelloWorldServlet
文件——新建Servlet,打开对话框:
查看代码:
4) 在项目中通过/HelloWorldServlet就可以使用这一Servlet了。无需web.xml配置文件。
@WebServlet,@WebInitParam用法及context param和init param的区别。
/**
* Created by jackie.cn on 2017/7/3.
* @author jackie.cn
*/
@WebServlet(name = "welcome", urlPatterns = "/welcome",
initParams = {@WebInitParam(name = "first name", value = "Ning"), @WebInitParam(name = "last name", value = "Cheng")})
public class Welcome extends HttpServlet {
private String fullName = null;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
fullName = getInitParameter("last name") + " " + getInitParameter("first name");
System.out.println("full name: " + fullName);
ServletContext context = getServletContext();
System.out.println("context parameter: " + context.getInitParameter("domain name"));
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("Welcome, my friend!");
resp.getWriter().flush();
}
}
这里web.xml的配置:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>domain name</param-name>
<param-value>jackie.cn</param-value>
</context-param>
</web-app>
其中,@WebServlet和@WebInitParam等同于web.xml配置:
<servlet>
<servlet-name>welcome</servlet-name>
<servlet-class>com.chengmaoning.mytest.Welcome</servlet-class>
<init-param>
<param-name>first name</param-name>
<param-value>Ning</param-value>
</init-param>
<init-param>
<param-name>last name</param-name>
<param-value>Cheng</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>welcome</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>
context param与init param的异同?
应用启动时,servlet容器会首先读取web.xml的<context-param>节点,紧接着创建一个servlet context上线文,这个servlet容器里所有servlet共享这个context,也就是说大家都能拿到这个context,获取里面的值。容器将<context-param>节点里的内容转换为键值对,存储在context中。
context中的context parma可以在servlet中通过这种方式获得:
ServletContext context = getServletContext();
System.out.println("context parameter: " + context.getInitParameter("domain name"));
init param是在servlet中定义的,只属于该servlet,存放在ServletConfig中,获取方式为:
fullName = getInitParameter("last name") + " " + getInitParameter("first name");
版权声明:本文为chengmaoning原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。