我正在设计一个简单的基于Web的应用程序.我是这个基于Web的域的新手.我需要您对设计模式的建议,例如如何在Servlet中分配责任,制作新Servlet的标准等.
实际上,我的主页上有很少的实体,并且每个实体都对应于我们添加,编辑和删除等几个选项.之前我每个选项使用一个Servlet,比如Servlet1,用于添加entity1,Servlet2用于编辑entity1等等,这样我们最终得到了大量的servlet.
现在我们正在改变我们的设计.我的问题是你如何选择如何选择servlet的责任.我们是否应该为每个实体安装一个Servlet,它将处理所有选项并将请求转发给服务层.或者我们应该为整个页面都有一个servlet来处理整个页面请求,然后将其转发到相应的服务层?此外,请求对象是否应转发到服务层.
在我的应用程序中,我有一个servlet,在web.xml中定义如下:
<servlet>
<display-name>Notification Servlet</display-name>
<servlet-name>NotificationServlet</servlet-name>
<servlet-class>com.XXX.servlet.NotificationServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>NotificationServlet</servlet-name>
<url-pattern>/notification/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
在使用Tomcat 7之后,我想使用@WebServlet将完成这项工作的注释.
这是我做的方式:
@WebServlet( name="NotificationServlet", displayName="Notification Servlet", urlPatterns = {"/notification"}, loadOnStartup=1)
public class NotificationServlet extends HttpServlet {
Run Code Online (Sandbox Code Playgroud)
它不起作用.有人可以告诉我我做错了什么吗?
我试图注册使用servletContainerInitializer一个servlet,但它似乎不工作,也许这是我的代码(好心审查),但是我到想知道的区别ServletContainerInitializer和ServletContextListener,因为使用时follwing代码运行正常ServletContextListener,而不是.
从servlet 3.0规范:
4.4
配置方法(动态添加servlet):
......或者从实施
onStartup方法ServletContainerInitializer......
的ServletContainerInitializer:
package com.marmoush.javaexamples.nullhaus.servlet;
import java.util.Set;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
public class MyInit implements ServletContainerInitializer {
public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
System.out.println("hello");
ServletRegistration reg = ctx.addServlet("q31","com.marmoush.javaexamples.nullhaus.servlet.Q31");
reg.addMapping("/q31/*");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试自动注册的servlet:
package com.marmoush.javaexamples.nullhaus.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Q31 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) …Run Code Online (Sandbox Code Playgroud) 我有不同的webapps共享web.xml配置的很大一部分.例如,某些servlet的映射方式对于所有应用程序都是相同的,但有些webapps具有自定义servlet,或者其他过滤器或共享托管bean.
每个webapp都是我IDE中的一个不同项目.我想将web.xml的公共部分重构为"通用"项目,并让所有特定于应用程序的web.xml扩展"通用"web.xml.有没有可能这样做?
servlets ×4
annotations ×1
java ×1
java-ee ×1
jsp ×1
modularity ×1
servlet-3.0 ×1
tomcat7 ×1
web.xml ×1