Tomcat7.0新特性:支持Servlet3.0注解定义,无需配置web.xml

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)        创建ServletHelloWorldServlet

文件——新建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");






 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值