Tag: servlets

如何在桌面Java应用程序中创建HttpServletRequest对象

我有一个摆动的桌面应用程序,我需要创建HttpServletRequest对象以通过Web服务将其传递给另一个应用程序,所以请建议我在简单的类中创建请求对象的好东西。

处理Tomcat servlet中的重复GET请求(由Trendmicro引起)

在Apache Tomcat servlet中处理来自同一客户端的重复GET请求的最佳策略是什么? 基本上,我得到的是2个请求相隔几秒钟,第一个来自客户端的真实IP,第二个来自TrendMicro服务器(这看起来与此处描述的效果相同)。 现在我的servlet忠实地为这两个请求提供服务但稍后会产生问题(因为它调用了另一个很可能无法处理这种情况的远程服务)。 所以问题是,如何阻止第二个请求? 或者还有其他策略可以解决这个问题吗? 谢谢!

为什么servlet不在多部分请求中找到FileItem?

我编写了一个使用Apache commons文件上传库处理文件上传的Servlet。 以下是一些代码: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { try { DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(); // Set size threshold for storing upload fileItemFactory.setSizeThreshold(1 * 1024 * 50); // 50 KB // Set temporary directory to store uploaded files above threshold size fileItemFactory.setRepository(new File(TEMP_DIRECTORY)); […]

将动态内容压缩为ServletOutputStream

我想压缩动态创建的内容并直接写入ServletOutputStream,而不是在压缩之前将其保存为服务器上的文件。 例如,我创建了一个Excel工作簿和一个StringBuffer,其中包含带有SQL模板的字符串。 在压缩文件并写入ServletOutputStream进行下载之前,我不想将动态内容保存到服务器上的.xlsx和.sql文件中。 示例代码: ServletOutputStream out = response.getOutputStream(); workbook.write(byteArrayOutputStream); zipIt(byteArrayOutputStream,out); public static boolean zipIt(ByteArrayOutputStream input, ServletOutputStream output) { try { ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(output)); ZipEntry zipEntry = new ZipEntry(“test.xlsx”); zos.putNextEntry(zipEntry); if (input != null) { zipEntry.setSize(input.size()); zos.write(input.toByteArray()); zos.closeEntry(); } } catch (IOException e) { logger.error(“error {}”, e); return false; } return true; }

Tomcat无法启动 – java.lang.ClassNotFoundException:org.hibernate.Query

我尝试在Servlet中使用Hibernate,但是当我启动服务器(Tomcat 7.0 – 右键单击​​>> start)时,服务器无法启动,而是它给了我这个错误: ….. SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/stockservletconnection]] at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source) at java.util.concurrent.FutureTask.get(Unknown Source) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.catalina.LifecycleException: Failed […]

向Servlet发出AJAX POST请求失败

从我的客户端代码,我正在对我的servlet进行AJAX调用。 如果我使用GET作为请求方法。 一切正常,我得到回应。 但是当我发送请求作为POST时,servlet无法发送响应。 从日志中我发现,在使用POST进行ajax调用时,servlet“request”对象为null。 根据这篇文章: Servlet对AJAX请求的响应是空的 ,我正在为同源策略设置标头。 以下是我的参考代码: function aimslc_ajaxCall(url,callback, postParams){ var xmlhttp = null if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ eval( callback+”(“+xmlhttp.responseText+”)” ); } } if(postParams!=null && typeof postParams!=”undefined” ){ xmlhttp.open(“POST”,url,true); xmlhttp.send(postParams); }else{ xmlhttp.open(“GET”,url,true); xmlhttp.send(); } } Servlet代码: public void doProcess (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { […]

如何从Java Servlet的激活链接获取数据

我正在使用GWT,然后用户注册,我需要向用户发送带有激活链接的邮件。 激活链接可能包含用户的用户名和散列值。 使用PHP,我知道使用get方法检索这些值。 我是新的GWT Java,我希望能够在激活链接中获取值。 我也在服务器上使用Java。 我只是想知道,在点击激活链接(其中包含一些数据来识别用户)后,当用户被重定向到我的网站时,我需要做什么。

如何处理JAX-RS中的意外exception

我的技术堆栈是Tomcat(servlet 3.0),Jersey用于JAX-RS,Spring和Hibernate。 当Hibernate中的某些数据转换错误出现意外问题时,我不希望客户端看到我的堆栈跟踪是否存在Tomcat尝试默认打印的exception。 但是,我想记录这些exception,以便找出错误并解决问题。 我的第一次尝试是使用来自JAX-RS的ExceptionMapper,并天真地认为可以解决我的问题。 但后来我发现泽西岛抛出了自己的例外,例如未映射的url是com.sun.jersey.api.NotFoundExceptions。 这会导致记录404exception,这是我不想要的。 更糟糕的是,客户端不再获得404而是获得状态代码500。 我可以为jersey抛出的exception创建exception映射器,但我可能会错过一些东西。 这样的事情有最好的做法吗?

Glassfish jdbc /数据库查找失败

我希望我不是因为我无法找到答案而问一个重复的问题。 我收到此错误: javax.naming.NamingException:SerialContext中的’jdbc / osclassDB’查找失败 这就是我所做的:我设置了一个JDBC连接池和一个指向该池的JDBC资源 (都在Glassfish中)。 然后我告诉我的web.xml有一个JDBC资源: jdbc/osclassDB javax.sql.DataSource Container Shareable 然后我尝试在Servlet中使用该资源: Connection connection = null; try { InitialContext initialContext = new InitialContext(); //Context dbContext = (Context) initialContext.lookup(“java:comp/env”); DataSource dataSource = (DataSource) initialContext.lookup(“jdbc/osclassDB”); connection = dataSource.getConnection(); if (connection == null) { throw new SQLException(“Error establishing connection!”); } // some queries here } // catch […]

请求调度程序转发和servlet链接之间的区别

请求调度程序的forward方法和servlet链接的概念有什么区别? 例 RequestDispatcher rd= req.getRequestDispatcher(“pathToServlet”); rd.forward(req,resp); 这样做是在不涉及客户端(浏览器)交互的情况下转发请求。 但是我们可以使用Servlet Chaining实现相同的目标吗? 如果我们可以那么有什么区别?