zoukankan      html  css  js  c++  java
  • Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet

    现象:

    用Eclipse新版本新建servlet时候,发现创建Servlet后,Eclipse不会自动在web.xml中生成该Servlet对应的mapping信息,而是在Servlet代码中加入注解@WebServlet,如下

    分析:

    查找文档发现,这是Servlet3.0新特性(得Tomcat7.0版本及以上),@WebServlet 用于将一个类声明为 Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet。该注解具有下表给出的一些常用属性(以下所有属性均为可选属性,但是 value 或者 urlPatterns 通常是必需的,且二者不能共存,如果同时指定,通常是忽略 value 的取值)

    解决方法:

    在@WebServlet 中定义Servlet的name、urlPatterns等信息

    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.annotation.WebServlet;

    @WebServlet(
    displayName = "This is Login Action", //描述
    name = "LoginAction", //servlet名称
    urlPatterns = { "/servlet/LoginAction" },//url
    loadOnStartup = 1, //启动项
    initParams = { @WebInitParam(name = "username", value = "张三") }//初始化参数
    )
    public class LoginAction extends HttpServlet {
    /**
    * Constructor of the object.
    */
    public LoginAction() {
    super();
    }
    }

    Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。
      像上面的LoginAction可以描述成@WebServlet(name="LoginAction",value="/LoginAction")。
      也定义多个URL访问:
      如@WebServlet(name="LoginAction",urlPatterns={"/LoginAction","/LoginAction2"})
      或者@WebServlet(name="LoginAction",value={"/LoginAction","/LoginAction2"})

    这样的简化形式也可以,相当于设置了name和urlPattern

    @WebServlet("/servlet/LoginAction")

    在新建Servlet时候在URL mapping中可以直接输入

  • 相关阅读:
    php 注册与登录
    php 多条件查询
    php(ajax)异步刷新(转)
    PHP中的6种加密方式
    ajax 异步刷新,需要填写的参数
    php+Mysql 页面登录代码
    php+Mysql页面注册代码
    jquery入门知识点总结(转)
    php+Mysql中网页出现乱码的解决办法详解
    php代码常见错误详解整理
  • 原文地址:https://www.cnblogs.com/Dearmyh/p/10989656.html
Copyright © 2011-2022 走看看