现在,我不想在我的web.xml中添加一个带有注册的Servlet,但使用注释,并在我的项目中使用它而不重新启动。我可以在不重新启动我的项目的情况下添加servlet
0
A
回答
0
您可以使用注释@WebServlet
有你的servlet class.Something如下
@WebServlet(urlPatterns = "/HelloWorldServlet", loadOnStartup = 1)
public class HelloWorldServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
//your stuff
}
}
了解更多详情请查看到This
0
的Tomcat允许重装类:https://www.mulesoft.com/tcat/tomcat-reload 你可以用它来检测到更改时重新加载应用程序。重新加载意味着应用程序继续运行,但servlet上下文和所有servlet都会重新加载,包括任何新的。我认为这将是最简单的解决方案,但可能并不是您想要的,因为所有其他servlet也都会重新加载。
正如你可以用一个 'front controller' 的servlet这将请求转发给POJO控制器做一些事情(有点难看)的替代:
@WebServlet(value="/myapp")
public class FrontControllerServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
String pageClass = request.getParameter("pageClass");
String pageClassFullyQualified = "com.myapp." + pageClass;
Class<?> pageClass = Class.forName(pageClassFullyQualified);
Constructor<?> constructor = pageClass.getConstructor();
Object object = constructor.newInstance();
Page page = (Page) object;
page.handle(request, response);
}
页界面:
public interface Page {
public void handle(HttpServletRequest request, HttpServletResponse response);
}
一个示范页面类:
package com.myapp;
public class MyPage implements Page {
public void handle(HttpServletRequest request, HttpServletResponse response) {
// handle the request
}
}
您使用页面类调用应用程序名称(不含包装):
http://localhost:8080/myapp?page=MyPage
而前端控制器应该实例化类并将请求/响应传递给它。如果Tomcat检测到一个新的页面并自动加载它,这应该允许热部署一个页面。
当然这只是一个概念证明。要求类名称作为请求参数是非常糟糕的做法,因为您正在将内部信息公开给客户端。
相关问题
- 1. 我可以在不重新启动JVM的情况下向密钥库添加新证书吗?
- 2. 如何在不重新启动我的Web应用程序的情况下重新加载servlet类?
- 3. 在不重新启动Xorg的情况下重新加载XINITRC
- 4. 我可以在不破坏和添加新项目的情况下更新ObservableCollection <T>中的值吗?
- 5. c#在不重新启动的情况下添加/删除动态插件
- 6. 如何在不重新启动REPL的情况下将依赖项添加到lein项目中?
- 7. 我可以在不重定向的情况下重写URL吗?
- 8. 是否可以在不重新启动进程的情况下重新启动Azure Web角色上的IIS?
- 9. 在不重新启动Servlet容器的情况下重新加载/刷新Spring配置文件
- 10. 在不重新启动活动的情况下恢复活动
- 11. 如何在不重新启动的情况下“重新启动”Internet Explorer服务
- 12. 是否可以在不启动npm的情况下运行React项目?
- 13. 我的XCode工作区在重新启动时不记得添加的项目
- 14. 是否可以在不重新启动的情况下应用vim配置?
- 15. 在不重新启动lighty的情况下更新.po文件
- 16. 我可以在不重新启动Jetty服务器的情况下更新应用程序配置文件吗?
- 17. 是否可以在不重新启动Django的情况下重新加载视图?
- 18. 在某些情况下,我可以永远防止重新启动我的节点脚本吗?
- 19. 我可以在不重新发布的情况下更改POST值的值吗?
- 20. 我可以在没有JVM重启的情况下重新加载JavaFX 8中的样式表吗?
- 21. pgbouncer可以在不重启的情况下重新读取/ etc/hosts文件
- 22. 在不启动eclipse产品的情况下构建项目
- 23. 我可以在不删除PriorityQueue的情况下获得一个项目吗?
- 24. 我们可以在不重新启动黑莓模拟器的情况下看到代码更改吗?
- 25. 在不重新启动服务的情况下更改jobcron
- 26. 在不重新启动的情况下应用vimrc更改
- 27. Solr是否可以在不重新启动Solr的情况下加载新的log4j.properties配置文件?
- 28. 我可以在不使用API ID的情况下添加Facebook按钮吗?
- 29. 如何在不重新启动服务器的情况下重新部署EJB项目
- 30. 如何在不重新启动的情况下重新加载JProfiler许可证服务器的users.txt文件?
请说明你的问题 –
我认为这是一个很好的问题,很清楚。 Op想要将一个新的servlet添加到正在运行的Web应用程序中。 –
不清楚的是“重启”的含义。没有重新启动服务器,或没有重新启动(/重新部署)的Web应用程序? – Gimby