相关疑难解决方法(0)

Design Patterns基于Web的应用程序

我正在设计一个简单的基于Web的应用程序.我是这个基于Web的域的新手.我需要您对设计模式的建议,例如如何在Servlet中分配责任,制作新Servlet的标准等.

实际上,我的主页上有很少的实体,并且每个实体都对应于我们添加,编辑和删除等几个选项.之前我每个选项使用一个Servlet,比如Servlet1,用于添加entity1,Servlet2用于编辑entity1等等,这样我们最终得到了大量的servlet.

现在我们正在改变我们的设计.我的问题是你如何选择如何选择servlet的责任.我们是否应该为每个实体安装一个Servlet,它将处理所有选项并将请求转发给服务层.或者我们应该为整个页面都有一个servlet来处理整个页面请求,然后将其转发到相应的服务层?此外,请求对象是否应转发到服务层.

java jsp design-patterns servlets

356
推荐指数
3
解决办法
10万
查看次数

HttpServletRequest完成URL

我有一个HttpServletRequest对象.

如何获得导致此调用的完整且准确的URL到达我的servlet?

或者至少尽可能准确,因为可能存在可以重新生成的东西(可能是参数的顺序).

java servlets http

230
推荐指数
6
解决办法
24万
查看次数

如何获取没有上下文路径的请求URI?

方法request.getRequestURI()返回带有上下文路径的URI.

例如,如果一个应用程序的基本网址http://localhost:8080/myapp/(即上下文路径是MYAPP),和我打电话request.getRequestURI()http://localhost:8080/myapp/secure/users,它将返回/myapp/secure/users.

有没有办法我们只能得到这个部分/secure/users,即没有上下文路径的URI?

java servlets

119
推荐指数
6
解决办法
23万
查看次数

Java从Servlet读取未解码的URL

让我们假设我有像'=&?/;#+%'这样的字符串作为我网址的一部分,让我们这样说:

example.com/servletPath/someOtherPath/myString/something.html?a=b&c=d#asdf
Run Code Online (Sandbox Code Playgroud)

其中myString是上面的字符串.我编写了关键部分,因此URL看起来像

example.com/servletPath/someOtherPath/%3D%26%3F%2F%3B%23%2B%25/something.html?a=b&c=d#asdf
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

当我在servlet中并且我读取任何一个request.getRequestURI(),request.getRequestURL()或者request.getPathInfo(),返回的值已经被解码,所以我得到了类似的strilng

someOtherPath/=&?/;#+%/something.html?a=b&c=d#asdf
Run Code Online (Sandbox Code Playgroud)

我无法区分真正的特殊字符和编码字符.

我通过完全禁止上面的字符解决了特殊的问题,这在这种情况下工作,但我仍然想知道有没有办法在servlet类中获取未解码的URL.

另一个编辑:当我昨晚遇到这个问题时,我太累了,无法注意到真正发生的事情,这更奇怪!我有servlet映射,比如说/ servletPath/*之后我可以放任何我想要的东西并让我的servlet响应路径的其余部分,除非路径中有%2F.在那种情况下,请求永远不会访问servlet,我得到404!如果我把'/'代替%2F它可以正常工作.我在Linux上运行Java 1.6.0-04上的Tomcat 6.0.14.

java url encode servlets decode

5
推荐指数
1
解决办法
1万
查看次数

Jetty:默认的servlet上下文路径

我需要设置Servlet(由于某些原因,只有servlet而不是处理程序)来处理war之外的文件.在这里/sf/answers/2011458501/我找到了以下解决方案:

Server server = new Server(8080);

ServletContextHandler ctx = new ServletContextHandler();
ctx.setContextPath("/");

DefaultServlet defaultServlet = new DefaultServlet();
ServletHolder holderPwd = new ServletHolder("default", defaultServlet);
holderPwd.setInitParameter("resourceBase", "./src/webapp/");

ctx.addServlet(holderPwd, "/*");//LINE N
ctx.addServlet(InfoServiceSocketServlet.class, "/info");

server.setHandler(ctx);
Run Code Online (Sandbox Code Playgroud)

这个解决方案有效,这就是我需要的.但是,一旦我将LINE N更改为,它就会停止工作ctx.addServlet(holderPwd, "/foo/*");.我试过"/ foo /","/ foo",但结果是一样的 - 我明白了not found.为什么?如何使其适应这种特定的背景?由于同样的原因,我使用jetty 9.2.15.

java servlets jetty embedded-jetty

3
推荐指数
1
解决办法
4716
查看次数

如何找出请求到达错误处理程序的网址?

我发送以下http请求:

http://localhost:8081/member/createCompany/getSmallThumbnail/
Run Code Online (Sandbox Code Playgroud)

在服务器端,我遇到了控制器方法:

@RequestMapping("/error")
public String error(Model model, HttpServletRequest request){
    if(request.getRequestURI().contains("thumbnail")){
        System.out.println("thumbnail accepted");
     }
     request.toString();
     model.addAttribute("message", "page not found");
     return "errorPage";
}
Run Code Online (Sandbox Code Playgroud)

在这种方法下,我想知道请求到达的URL。

如果在调试中停止在此方法内,则会看到所需的信息: 在此处输入图片说明

但是我无法在请求中找到将返回此方法的方法。

请帮助返回我想要的网址。

聚苯乙烯

实际上我没有在Spring MVC应用程序中映射控制器(URL损坏)http://localhost:8081/member/createCompany/getSmallThumbnail/。此url(“ / error”)在web.xml中配置为错误页面。

servlets spring-mvc request custom-error-handling

2
推荐指数
1
解决办法
615
查看次数

构造多个servlet请求url模式

我正在使用servlet从前端获取请求。我能否制作一个可以基于url模式执行多个操作的servlet?这是我的网址映射

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
<url-pattern>/HelloServletOne</url-pattern>
<url-pattern>/HelloServletTwo</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

这意味着,如果我按如下所示访问URL,则应调用其自身的功能。

  • URL:/ HelloServlet:它应该执行功能1
  • URL:/ HelloServletOne:应该执行功能2
  • URL:/ HelloServletTwo:应该执行3等功能

我如何通过扩展servlet实现这一点?
代码/链接示例非常受赞赏。

java servlets

1
推荐指数
1
解决办法
5616
查看次数