我需要在运行时创建添加servlet。当我运行以下代码时。
protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title> URI out</title>");
out.println("</head>");
out.println("<body>");
Integer generatedKey = Math.abs(randomiser.nextInt());
out.print(generatedKey);
createServlet(Integer.toString(generatedKey),request.getServletContext());
} finally {
out.println("</body>");
out.println("</html>");
out.close();
}
}
private void createServlet(String generatedKey, ServletContext servletContext) {
String servletMapping = "/"+generatedKey;
ServletRegistration sr = servletContext.addServlet(generatedKey, "com.path.lbs.servlets.testDynamic");
sr.setInitParameter("keyname", generatedKey);
sr.addMapping(servletMapping);
}
我收到以下错误。
java.lang.IllegalStateException:PWC1422:无法为servlet上下文/ 123-LBS的servlet
1114600676配置映射,因为此servlet上下文已经被初始化
是否不可能在运行时即在初始化Servlet上下文之后添加新的servlet,还是我做错了什么?
是否不可能在运行时即在初始化Servlet上下文之后添加新的servlet?
没错
您需要在中执行此操作ServletContextListener#contextInitialized()
。
@WebListener
public class Config implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
// Do it here.
}
@Override
public void contextDestroyed(ServletContextEvent event) {
// ...
}
}
但是,对于您的特定功能需求,将单个控制器servlet与命令模式结合使用会更好。然后,您可以在运行时添加命令(操作)并根据请求URI在其上进行拦截。
问题内容: 我有一个使用插件体系结构的Java Web应用程序。我想知道是否有人可以通过Web应用程序运行时通过Serlvet映射到servletconfig来添加servlet的解决方案?这样的想法是,可以将一个类添加到/ WEB-INF / classes文件夹中,并使其成为Servlet,而无需重新启动Web应用程序。同样,如果用户选择删除“插件”,则让代码从servletconfig中删除
我正在使用Spring In Action 3 Action学习Spring MVC,我已经实现了显示用户注册表的基本程序,一旦我们提交表单,它将使用进行验证。 这是我的Spring控制器: 这是我的Spitter类文件: 这是我的编辑。显示给用户注册的jsp文件: 要加载表单,我将访问URL为:,一旦表单被加载,我只需提交表单而无需输入任何详细信息,以便我可以检查我的表单是否得到验证。但是我得到
我正在学习Spring MVC,当我试图运行html文件时,它会给出错误HTTP Status 500-引发异常 这是我的web.xml 这是我的Spring调度员Servlet 这是我的jsp页面 这是我的HelloController课程 这是我得到的一个例外 我正在使用Eclipse 4.5.1、Tomcat 8.0.30和Spring 4.2.3。
我在这里的编码
在eclipse中运行此程序时出现异常。Servlet。servlet示例的init()引发了异常描述服务器遇到了一个内部错误,使其无法满足此请求。
消息 说明服务器遇到内部错误(),无法运行 根本原因 根本原因 当我将浏览器用作http://localhost:8080/sample/rest/app/test将返回一个json数据类型。。 产品类 StringService类 StringServiceApplication 我的网络。xml 我的jboss网站。xml 构建路径上的我的库——javassist-3.12.1。GA-json