Tag: servlets

寻找HttpServletResponseWrapper的捕获impl

JavaEE API附带了HttpServletResponseWrapper,引用javadoc,“提供了一个方便的HttpServletResponse接口实现,可以由希望调整Servlet响应的开发人员进行子类化。” 没有子类化,这个类只是将所有调用传递给包装的响应对象。 请求有一个类似的包装器。 有人能指出我提供这些类的有用子类实现的任何实用程序库吗? 特别是,我正在寻找响应包装器的子类,它捕获写入的响应(作为String,byte [],无论什么是合适的)并通过API方法公开它。 我自己写了一个相当半成品的版本,但坦率地说,我不应该这样做,而且我宁愿扔掉它并使用一个现成的。

在servlet中获取init参数

我是servlets的新手。 我使用getInitParameter (“name”)在init()方法中获得了DD中的init参数。 我在doGet()方法中尝试了很多来访问init参数,但它总是返回null 。 我试过了 getServletContext().getInitParametr(“name”) 与 getServletConfig().getInitParametr(“name”) 但他们都返回null 。 我可以在doGet()获取init参数吗?

从URI获取锚点

我正在编写JSP / Servlet,我正在尝试获取URI的锚点部分,例如: blabla.rdf#mark 如何从我的请求中获得我的标记? 显然request.getParameter()不起作用? 欢迎任何帮助。

在Java Servlet的上下文中,URL重写和转发有什么区别?

作为Java Web应用程序的开发人员,何时需要使用URL重写以及URL重写和转发之间的区别是什么? 我在其他网站上搜索,我得到的是相互矛盾的信息,这取决于你所说的人,SEO人会以不同的方式回答这个问题。 AFAIK在两种情况下都不会通知客户端(浏览器)更改,并且最终用户看到客户端在从服务器返回休止符时最初请求的完全相同的URL。 请问这个问题是在Java Servlet API的上下文中,其中定义了forward方法和sendRedirect方法,其中重定向和转发完全是两个不同的东西。 这个问题是关于forward(由Servlet API中的forward方法定义)和URL重写之间的区别。 问题清楚地表明答案应该在Java servlet的上下文中。 最重要的是,在开发Java Web应用程序的上下文中,我何时需要使用URL重写。

在服务器端为servlet JSP MVC网站运行定期任务

我使用servlet和JSP开发了一个Web应用程序。 我本身并没有使用任何框架,而是使用我自己的自制的MVC框架。 我使用MySQL作为后端。 我想做以下事情: 每小时清理数据库中的一些数据 在某个XML文件中每15分钟生成并存储有关数据的统计信息 问题是:目前我的所有代码都是从客户端收到的请求运行的。 如何在服务器端运行定期任务? 我现在的一个解决方案是在控制器的init函数中创建一个线程。 还有其他选择吗?

管理多个选项卡的webapp会话数据/控制器流

我有一个Java Web应用程序,它在会话中存储一些数据。 当用户与应用程序交互时,会话中的数据发生变化(例如,流程由控制器管理,每个控制器具有多个表单页面,在每个表单页面上,一些数据在会话中更新,流程转到下一个表单页面)。 问题是一些用户正在向应用程序打开多个选项卡,每个选项卡在流程中都有不同的步骤。 此时会话中的数据混乱,因为选项卡共享同一会话(应用程序使用cookie托管会话)。 告诉用户使用不同的浏览器以避免共享相同的会话ID(例如,一个Firefox窗口和一个IE窗口)不是一种选择,因为在某些时候肯定会有人忘记这样做而是使用制表符,从而弄乱他们的数据。 添加一些检测从另一个选项卡请求另一个流并向用户显示不允许这样的消息的validation不是一个选项,因为它对用户很生气而我们不希望这样做吗? :d 事实是,使用另一个选项卡对用户非常有用,因为它们在使用应用程序时更有效,所以我保留了这个选项。 但现在的问题是如何最好地管理更多标签的一个会话数据? 我想到的是让控制器在启动流时生成一个令牌,并将此令牌传递给每个表单页面,然后将其发送回标识自身。 如果另一个选项卡在有正在​​进行的流时请求相同的控制器操作,则生成另一个令牌并传递它。 基本上,我希望每个流都有一个令牌,在会话中我不仅会保留一组数据,而是为每个令牌提供一组数据,然后根据令牌匹配请求。 现在的问题是这种方法需要对应用程序进行大量的重写,我想知道是否有管理这种情况的最佳实践,或者有人可以建议其他方法。 我对这些想法持开放态度。 你遇到过这种情况吗? 你是怎么处理的呢?

如何通过Java EE Web应用程序在服务器(Web容器)上存储文件?

我开发了一个Java EE Web应用程序。 该应用程序允许用户在浏览器的帮助下上传文件。 一旦用户上传了他的文件,该应用程序首先将上传的文件存储在服务器上(运行它),然后对其进行处理。 目前,我将文件存储在服务器上,如下所示: try { // formFile represents the uploaded file FormFile formFile = programForm.getTheFile(); String path = getServlet().getServletContext().getRealPath(“”) + “/” + formFile.getFileName(); System.out.println(path); file = new File(path); outputStream = new FileOutputStream(file); outputStream.write(formFile.getFileData()); } 其中, formFile表示上传的文件。 现在,问题是它在某些服务器上正常运行但在某些服务器上getServlet().getServletContext().getRealPath(“”)返回null因此我得到的最终路径是null/filename并且文件没有不要存储在服务器上。 当我检查API for ServletContext.getRealPath()方法时,我发现了以下内容: public java.lang.String getRealPath(java.lang.String path) 返回包含给定虚拟路径的实际路径的String。 例如,路径”/index.html”返回服务器文件系统上的绝对文件路径,该请求将由”http://host/contextPath/index.html” ,其中contextPath是此ServletContext的上下文路径。 返回的实际路径将采用适合运行servlet容器的计算机和操作系统的forms,包括正确的路径分隔符。 如果servlet容器由于任何原因(例如,当从.war存档提供内容时)无法将虚拟路径转换为实际路径,则此方法返回null。 那么,我是否可以通过其他方式在这些服务器上存储文件,这些文件为getServlet().getServletContext().getRealPath(“”)返回getServlet().getServletContext().getRealPath(“”)

如何在File类中提供相对路径来上传任何文件?

我正在上传一个文件,我想提供一个相对路径,因为该程序应该在linux和windows环境下工作。 这是我用来上传的内容 realPath = getServletContext().getRealPath(/files); destinationDir = new File(realPath); if(!item.isFormField()) { File file = new File(destinationDir,item.getName()); item.write(file); } 在这里直接提供相对路径的任何其他方法 File file = new File(destinationDir,item.getName());

如何在会话对象被销毁之前调用方法?

在开发JSP应用程序时,可以定义会话超时值,比如30分钟。 超时后,会话对象被销毁。 此外,我可以编程方式使会话调用session.invalidate()无效。 由于我在HTTP会话中保存了一个复杂的Java对象,因此在使会话无效或让tomcat app服务器过期之前,我需要调用一个保存的对象方法来释放一些内存。 当然,当用户单击注销按钮时,我可以以编程方式执行此操作。 我想要做的是拦截Tomcat应用服务器,当它要销毁所有过期的会话(30分钟或自定义)时,这样我就可以预处理会话中保存的Java对象,调用特定的方法来释放内存。 可能吗?

如何从jsp请求对象获取基本URL?

如何从jsp请求对象获取基本URL? http:// localhost:8080 / SOMETHING / index.jsp ,但我希望直到index.jsp的部分,在jsp中怎么可能?