Tag: servlets

使用web.xml的Servlet映射

我对servlet映射的web.xml的结构有困惑,我没有执行任何问题,但我想知道为什么我们在部署描述符中有这样的模式。 <web-app> <servlet> <servlet-name>Servlet1</servlet-name> <servlet-path>foo.Servlet</servlet-path> </servlet> <servlet-mapping> <servlet-name>Servlet1</servlet-name> <url-pattern>/enroll</url-pattern> </servlet-mapping> </web-app> 现在就我的理解而言,每当有一个请求时,url-pattern“/ enroll”,servlet容器就会把servlet-name和url-pattern相匹配,并且会尝试find相应的servlet-path,并将控制到foo.Servlet。 所以基本上会有两个传递一个查找servlet名称和另一个servletpath,我的问题是,如果容器devise工作在以下方式 <web-app> <servlet> <servlet-name>foo.Servlet</servlet-path> <url-pattern>/enroll</url-pattern> </servlet> </web-app> 如果我们使用下面的方法会有什么缺点? 这不是更有效率,响应时间会很快。

应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()吗?

我找不到一个权威的答案,用谷歌search。 在Java servlet中,可以通过response.getOutputStream()或response.getWriter()来访问响应主体。 这个stream被写入后,是否应该调用.close()? 一方面,布洛赫的劝告总是closures输出stream。 另一方面,我不认为在这种情况下,有一个潜在的资源需要closures。 套接字的打开/closures在HTTP级别进行pipe理,以允许持久连接等。

JSP转发与redirect的区别

请解释jsp:forward和redirect之间的区别? 每种情况下发生了什么?

使用Ajax从Servlet下载文件

我在我的servlet中创build了一个zip文件。 现在我想用Ajax触发这个servlet,并提示下载对话框给用户。 我可以触发servlet,但我不知道如何获得保存对话框。 我怎样才能做到这一点?

如何在JSP中的特定button的点击/提交事件时调用特定的Java方法?

我的Java文件是: public class MyClass { public void method1() { // some code } public void method2() { //some code } public void method3() { //some code } } 在我的JSP页面中,我有三个HTMLbutton。 如果我点击button1 ,那么只有method1会被调用,如果我点击button2那么只有method2会执行,如果button3 ,那么只有method3 ,等等。 我怎样才能做到这一点?

在Java servlet中从POST请求获取请求负载

我有一个JavaScript库发送一个POST请求到我的Java servlet,但在doPost方法,我似乎无法得到请求有效载荷的内容。 在Chrome开发者工具中,所有的内容都在头文件标签的Request Payload部分,内容就在那里,而且我知道doPost方法正在接收POST,但是它只是空白。 对于HttpServletRequest对象,我可以通过什么方式获取请求负载中的数据? 做request.getParameter()或request.getAttributes()都没有数据

为什么业务逻辑应该移出JSP?

在JSP之外保留业务逻辑的好处是什么,因为JSP主要是为了演示? 我们仍然可以看到JSP内部编写的业务逻辑,所以我需要知道将业务逻辑从JSP中移出来会带来什么好处。

如何在JSF框架中实现JAX-RS RESTful服务

在我的实验室中,我被要求使用JSF框架创build一个简单的网站,并使用REST。 我对这两个人做了一些研究。 事实certificate,对于REST,我必须在Jersey上使用JAX-RS框架。 我想知道如何整合这两个框架,JAX-RS和JSF? 我在JSF的web.xml已经有了下面的servlet: <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/test/*</url-pattern> </servlet-mapping> 对于泽西岛,我觉得我必须在web.xml使用下面的servlet: <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.jbm.rest</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping> 现在我担心的是,对于我来说,这个Jersey servlet似乎会取代web.xml的Faces servlet。 这将改变我的应用程序从JSF到JAX-RS。 但是我想保留JSF并使用JAX-RS。 我怎样才能做到这一点?

如何删除Java Servlet中的Cookie

如何删除Java servlet中的cookie? 我试过这个: http : //www.jguru.com/faq/view.jsp?EID=42225 编辑:下面现在成功地工作,它似乎是以下组合: response.setContentType("text/html"); 和 cookie.setMaxAge(0); 在我做之前: //remove single signon cookie if it hasn't been validated yet response.setContentType("text/html"); Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, ""); cookie.setDomain(SSORealm.SSO_DOMAIN); cookie.setMaxAge(-1); cookie.setPath("/"); cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis()); response.addCookie(cookie); 根据文档closures浏览器时,cookie将过期。 负值意味着cookie不会永久存储,并且在Web浏览器退出时将被删除。 零值会导致Cookie被删除。 完整的工作片段过期的cookie是: //remove single signon cookie if it hasn't been validated yet response.setContentType("text/html"); Cookie cookie […]

HTTP请求参数不能通过request.getAttribute()

我使用以下jQuery件发送一个url参数给servlet: $.getJSON("http://localhost:8080/JsoupPrj/JasonGen?url=" + url, function(data) { $("#content").html(data); }); 在服务器端,servlet获取参数,我编码如下: String url = (String) request.getAttribute("url"); 但是它不工作,你能告诉我我在做什么错吗? 我相信我没有正确地将parameter passing给servlet。 servlet每次都通过JavaScript触发,但是没有看到从浏览器传来的参数。