Tag: servlets

是否有Tomcat / Java的URL重写引擎?

我们如何为Tomcat / Java提供URL重写支持? mod_rewrite为Apache提供此function,甚至可以在URL到达处理程序之前修改URL(例如PHP)。 Java / Tomcat中是否有类似的工具? 更具体地说,我们需要修改,例如 http://www.somedomain.com/person/1 地图到 http://www.somedomain.com/details?personId=1 这应该对servlet代码透明,即我们应该能够访问servlet中的request.getParameter(“personId”)并获取personId(在本例中为1)。 你遇到过这种情况吗? 你用了什么工具? 很想听听你的建议。

捕获服务器端生成的动态内容

有什么办法可以在服务器端捕获生成的动态内容,并将相同的文件或字符串对象提供给servlet。 我们可以使用JSP生成动态内容,但是我们无法访问服务器端生成的动态内容。 我们一旦转发容器生成动态内容并将其发送到响应。 我需要访问服务器端生成的动态内容。 任何帮助将不胜感激。

从servlet输出图像文件

如何在servlet中提供存储在硬盘上的图像? 例如: 我有一个存储在路径’Images/button.png’ ,我想在一个带有URL file/button.png的servlet中提供这个’Images/button.png’ 。

使用java servlet在浏览器中显示Pdf

我的应用程序中有pdf文件。 我需要在浏览器中显示pdf。 我正在将文件作为fileInputStream读取,我需要在我的应用程序中使用浏览器显示pdf。 但我没有pdf路径,我有文件流。 请给我一些建议和例子 我用ajax来显示pdf,我使用call_method()javascript ajax请求方法来调用showPdf动作,在showpdf动作中只是将pdf文件转换为ByteArrayOutputStream并将结果写在out put流中。 但它显示了下面提到的结果。 JSP中的结果 : %PDF-1.4% 1endstream endobj 4 0 obj >> / MediaBox [0 0 595 842] >> endobj 1 0 obj endobj 3 0 obj endobj 5 0 obj endobj 6 0 obj endobj xref 0 7 0000000000 65535 f 0000000389 00000 n 0000000015 00000 n 0000000477 […]

将特定servlet映射为Tomcat中的缺省servlet

我正在尝试实现一个获取原始请求的servlet,并决定处理它们,还是将它们转发到另一个后端服务器。 它类似于负载均衡器,其中收到的请求被转发到(在我的情况下为2)目的地之一。 其中一个目标是远程(在另一台主机上)。 此外,请求可以到根( http://mycompany.com/ )。 因为我想获得原始请求,所以我实现了自己的servlet(子类化HttpServlet ),这非常HttpServlet 。 我的servlet看起来像: public class MyProxyServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { processOrForward(req, resp); } // also doGet(), doHead(), … } 由于我想要处理的服务可以向root发送请求,我想将我的servlet映射为默认的servlet,从而接收任何没有显式servlet映射的请求。 假设我的servlet的名称是“myservlet”,并且正在另一个servlet“foo”的一侧运行,我希望所有以http://mycompany.com/foo/ …forms发出的请求都被传递给foo,以及一切else(例如/,/ bar / …,/ myservlet / …)到“myservlet”。 看一下之前的post(例如, 这里和这里的根映射,或者这里的 url重写),我以为我想出来了,但它不起作用。 这是我的web.xml : ProxyServlet com.mycompany.MyProxyServlet 1 ProxyServlet /* […]

在Servlet / JSP中加载属性文件

我已经从我的Java project创建了一个jar ,并希望在JSP Servlet Project使用相同的jar。 我正在尝试加载一个属性文件,假设我的JSP Servlet Project中的WEB/properties/sample.properties保存在WEB/properties/sample.properties ,应该由jar的类读取。我在类中使用以下代码wriiten jar来访问它。 Properties prop=new Properties(); prop.load(/WEB-INF/properties/sample.properties); 但每次我得到fileNotFound exception 。 请建议我的解决方案。 这是结构 WEB-INF | lib | myproject.jar | myclass (This class needs to read sample.properties) | properties |sample.properties

对于HttpServletRequest类型,未定义方法getDispatcherType()

当我从Eclipse运行我的应用程序时,它运行时没有任何错误的servlet api 3.1.0和3.0.1。 javax.servlet javax.servlet-api 3.1.0 我使用tomcat 8.0.21进行eclipse。 我在ubuntu机器上设置了tomcat8,它运行在tomcat 8.0.14稳定版本上。 不幸的是,如果我使用servlet api 3.1.0,我会收到以下错误消息。 但它适用于旧版本3.0.1。 root cause org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: [50] in the generated java file: [/var/lib/tomcat8/work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/view/templates/login_002dtemplate_jsp.java] The method getDispatcherType() is undefined for the type HttpServletRequest Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:199) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450) org.apache.jasper.compiler.Compiler.compile(Compiler.java:361) org.apache.jasper.compiler.Compiler.compile(Compiler.java:336) org.apache.jasper.compiler.Compiler.compile(Compiler.java:323) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) […]

如何在Tomcat中设置请求编码?

我的Java webapp中存在问题。 这是index.jsp中的代码: JSP Page Hello World! Res: 当我发送请求时,我的浏览器会发送此标头: GET /kjd/index.jsp?q=%C3%A9 HTTP/1.1\r\n … Accept-Charset: UTF-8,*\r\n Tomcat服务器将此返回给我: Content-Type: text/html;charset=UTF-8\r\n 但是如果我在表格中发送“é”(UTF-8中的%C3%A9),则会显示“é”。 我的理解是浏览器发送一个用UTF-8(%C3%A9)编码的“é”。 但服务器将其解释为ISO-8859-1。 所以%C3被解码为Ã而%A9被解码为©,然后发回以UTF-8编码的响应。 在代码中,请求应使用UTF-8解码: request.setCharacterEncoding(“UTF-8”); 但是,如果我发送这个url: http://localhost:8080/kjd/index.jsp?q=%E9 “%E9”用ISO-8859-1表示,显示“é”。 为什么这不起作用? 为什么请求使用ISO-8859-1进行解码? 我在Tomcat 6和7以及Windows和Ubuntu上尝试过它。

从嵌入式Jetty中的备用路径提供静态文件

我正在尝试创建一个嵌入式jetty服务器,其中包含一个提供动态数据的自定义servlet,以及将为一些图像提供服务的默认servlet。 我有自定义servlet工作,但我无法弄清楚如何添加默认servlet来提供图像文件。 这就是我的…… private void setUpServer(ServerOptions options){ s = new Server(options.getPort()); this.options = options; context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath(“/”); s.setHandler(context); context.addServlet(new ServletHolder(new DataServlet()), “/data/*”); context.addServlet(new ServletHolder(new DefaultServlet()), “/pictures/*”); } 我无法弄清楚如何配置DefaultServlet作为文件服务器,仍然有自定义DataServelet仍然工作。 有没有人有任何想法?

使用JSP / Servlet和Ajax的简单计算器

这是我之前的问题的延续,但我觉得它应该独立,特别是因为我得到了非常详细的答案。 我想在jsp中创建一个简单的计算器。 将有两个用于数字的文本框和一个添加按钮。 理想情况下,我希望答案出现在页面中而不重新加载,但从我得到的答案来看,它似乎对我的规模来说太大了。 我可以想到:1)打印第三个文本框的答案(这可能吗?)或以某种方式加载相同的页面(使用添加按钮和所有)和答案(并能够输入不同的数字等) 。 你能建议一个好方法吗?