J2EE/JAVA——在Servlet容器指定url的方法(注解与Web.xml文件)

2023-11-06

目录

1.在注解中指定URL方法

2.在web.xml文件中指定

3.两种方法的不同点

4.常见问题

(1)项目文件中找不到web.xml文件

(2)无法使用注解进行路径指定


1.在注解中指定URL方法

首先,这里给出一个Servlet的简单实例代码:

public class ServletDemo03 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);  //交给doPost运行
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
		
		PrintWriter out = resp.getWriter(); 
		out.println("Hello,world--Browse"); //输出到浏览器界面中
		System.out.println("Hello,world--console"); //输出到编译器console中
	}

}

如果要将这个Servlet类在容器中运行起来,则就需要指定类的URL,这里使用第一种方法,在.java文件中使用注解的方式进行配置。

注解配置语句:

@WebServlet("/url名")

将这条语句放在类的前面,即可完成该类的URL指定。

@WebServlet("/demo03")
public class ServletDemo03 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		PrintWriter out = resp.getWriter();
		out.println("Hello,world--Browse");
		System.out.println("Hello,world--console");
	}

}

 例如这个时候,在类的前面加上了@WebServlet("/demo03")。那么就在运行项目的时候在URL最后加上\demo03就可以运行该类。

2.在web.xml文件中指定

除了在.java文件中,也在web.xml文件中进行配置。

首先找到该项目下的web.xml文件,右键——》open with——》Generic Text Editor,打开web.xml文件后添加指定语句即可。

语句格式为:

<servlet>
  	<servlet-name>类名</servlet-name>
  	<servlet-class>包名.类名</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>类名</servlet-name>
  	<url-pattern> /URL名 </url-pattern>
  </servlet-mapping>

例如这个时候我们在web.xml中添加我们的指定语句

 这个时候就完成了对URL的配置,那么就在运行项目的时候在URL最后加上/servletDemo03就可以运行该类。

 

3.两种方法的不同点

使用注解进行指定时,只需要在.java文件中写入即可,而另一种方法需要在web.xml文件中写入。

由此可以得出两者的优缺点。

注解指定优缺点
优点 可以在.java文件中写入,代码量小,容易检查错误。
缺点 每一个Servlet类前都需要写入一句注解才能够运行。不利于集中管理
web.xml指定路径的优缺点
优点 项目内所有Servlet类都在改文件指定,容易集中管理。
缺点 当Servlet类过多时,.xml文件内容会非常多,并且在xml文件中不能使用编译器查找错误,编写修改的难度很大。

4.常见问题

(1)项目文件中找不到web.xml文件

因为在最新的Servlet版本上,默认不创建web.xml文件,所以在创建项目中需要勾选上创建web.xml的选项。

(2)无法使用注解进行路径指定

因为使用注解进行路径指定是在Tomcat7.0,Servlet3.0之后的版本才推出的,所以如果在创建项目中选用之前的老旧的版本,那么就无法使用该方法。所以我们在创建项目的时候需要选择Tomcat7.0和Servlet3.0以后版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

J2EE/JAVA——在Servlet容器指定url的方法(注解与Web.xml文件) 的相关文章

  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 当从服务类中调用时,Spring @Transactional 不适用于带注释的方法

    在下面的代码中 当方法内部 是从内部调用的方法外部 应该在交易范围内 但事实并非如此 但当方法内部 直接从调用我的控制器class 它受到事务的约束 有什么解释吗 这是控制器类 Controller public class MyContr
  • Hibernate.createBlob() 方法从 Hibernate 4.0.1 开始已弃用,并移至 Hibernate.getLobCreator(Session session).createBlob()

    Method Hibernate createBlob 已弃用自休眠4 0 1并搬到Hibernate getLobCreator Session session createBlob 任何解决方案我应该在方法内传递什么getLobCrea
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • Eclipse 中 Spring MVC 模型对象的 (jsp /jstl) 视图中的代码辅助

    在 Spring MVC 中 当将对象放置在视图模型中时 如下所示 public String getUser Model model fetch user model addAttribute user user return viewN
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐