我正在考虑在我的J2EE应用程序中实现Front Controller.您能否提供相同的链接(包含源代码示例)和任何标准?
最好的祝福
美好的一天!
我打算做一个简单的CRUD应用程序.我打算让我的添加,编辑,删除和查看由一个控制器处理.像这样的东西:
@WebServlet(name="ControllerServlet",
urlPatterns = {"/add","/edit","/delete","/view"}
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中使用此代码:
String userPath = request.getServletPath();
if (userPath.equals("/add")) {
}
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否是一种常见做法.无论如何,我想知道这是什么最好的做法?这样做的优点和缺点是什么,而不是分离每个控制器?
先感谢您.
下面的URL,所选答案中的第一个内容描述了JSP隐藏.
我到目前为止了解到我可以将jsp文件放在/ WEB-INF目录下.这样就可以防止用户直接访问http://test.com/WEB-INF/register.jsp(返回404)
我以为我理解但不想并且想要更好地描述,所以我在这里提出问题.
比方说,我有2个jsp文件.
web应用/ ROOT /针对home.jsp
web应用/ ROOT/WEB-INF/register.jsp
注意:/go_register映射到Registerweb.xml(DD)中的servlet类
针对home.jsp
<html>
<body>
<a href="/go_register">Go to register.jsp</a>
<body>
</html>
Run Code Online (Sandbox Code Playgroud)
register.jsp
<html>
<body>
<form method="post" action="/process_register">
<input type="submit">
</form>
<body>
</html>
Run Code Online (Sandbox Code Playgroud)
所以..因为register.jsp位于/ WEB-INF /下,所以只有RequestDispatcher可以访问它.这意味着我需要创建用于转发请求的servlet.
public class Register extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String address = "/WEB-INF/register.jsp";
request.getRequestDispatcher(address).forward(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
但这看起来不对.如果我想将登录页面/WEB-INF/login.jsp添加到home.jsp,为了访问login.jsp,我必须创建另一个servlet 只是为了进入登录页面目的 ???
public class Login extends HttpServlet {
public void doGet(HttpServletRequest request, …Run Code Online (Sandbox Code Playgroud) 我需要编写一个小型Java类,使我能够添加和读取当前用户会话.
我看到的一切都是指Servlets,但我最好只想使用一个普通的老类.
任何人都可以帮助这个Java新手吗?
谢谢
我需要在运行时创建添加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);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
java.lang.IllegalStateException:PWC1422:无法为servlet上下文/ 123-LBS的servlet 1114600676配置映射,因为此servlet上下文已经初始化
是否无法在运行时添加新的servlet,即在Servlet Context初始化之后或者我做错了什么?
我想映射一个servlet来提供包含'app'的请求,并以下面的方式结束*.html
<url-pattern>/app/*.html</url-pattern>
Run Code Online (Sandbox Code Playgroud)
但在运行应用程序时,它给了我一个错误
java.lang.IllegalArgumentException: Invalid <url-pattern>
/app/*.html in servlet mapping
Run Code Online (Sandbox Code Playgroud)
请帮我映射一下.请提供我可以了解这些网址映射规则和约定的链接.
user在servlet中为null.如果做错了请让我.
我试图获取bean rateCode.jsp中的所有html元素
<%@page import="com.hermes.data.RateCode_" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Rate Code</title>
</head>
<body>
<jsp:useBean id="user" class="com.hermes.data.RateCode_" scope="request" >
<jsp:setProperty name="user" property="*"/></jsp:useBean>
<form id="f_rateCode" action="/ratePromoCodes" method="post" >
<table align="center" border="1" cellspacing="0">
<tr>
<td colspan="2" align="center" class="header">Rate Code Administrations</td>
</tr>
<tr>
<td align="right" style="border-style: solid;">Rate Code:</td>
<td align="left" style="border-style: solid;">
<input type="text" id="code" name="code" value="${user.code}" size="10" maxlength="32" style="width: 100px"/>
</td>
</tr>
<tr>
<td align="right" style="border-style: solid;">Rate Description:</td>
<td align="left" style="border-style: solid;">
<input type="text" id="description" name="description" value="<%=user.getDescription()%>" …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个 WebFilter。这个 Webfilter 应该检查一个 coockie。但是使用 FacesContext.getCurrentInstance() 会导致 Nullpointer 异常。我该如何解决这个问题?
网络过滤器:
@Inject
private CookieManager cm;
[...]
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if(cm.isDoCheck()){
cm.doCheck();
}
chain.doFilter(request, response);
}
[...]
Run Code Online (Sandbox Code Playgroud)
执行 FacesContext.getCurrentInstance() 的 CookieManager:
[...]
private void doCheck(){
FacesContext context = FacesContext.getCurrentInstance();
Map<String, Object> cookies = context.getExternalContext().getRequestCookieMap();
Cookie cookie = (Cookie) cookies.get("frontend");
if(cookie != null){
setSessionHash(cookie.getValue());
}
}
[...]
Run Code Online (Sandbox Code Playgroud)
context.getExternalContext().getRequestCookieMap(); 给出
StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud) 我对 servlet 和 spring mvc 有基本的了解。但是我不知道spring mvc中是否有servlet的使用。在 spring mvc 中,我们有控制器类。我的想法是servlet在spring mvc中用作控制器。如果我不正确,请纠正我。
如何在没有web.xml或注释的情况下以编程方式实现此映射?任务不是使用任何框架,如弹簧或其他东西.
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>test.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)