Tag: servlets

在Servlet工作完成之前或之后执行doFilter()吗?

javax.servlet.Filter对象既可用于身份validation(Filter需要在任何servlet工作完成之前捕获请求),也可用于XSLT转换(servlet需要完全生成内容)。 什么时候实际执行? 我知道这是依赖于实现的(在Web容器上),但这似乎是需要所有人解决的问题。 也许为Web容器的每个Filter注册设置一个配置选项? 额外: 什么控制filter执行的顺序? 为什么FooFilter会在BarFilter之前执行?

如何从servlet中可移植地读取配置数据

我正在编写一个需要读取一些特定于站点的配置数据的Java servlet; 我希望系统管理员在部署时可以轻松访问/修改它。 没有合理的默认值,因此数据必须由站点管理员提供。 它由几个字符串键/值对组成(想想属性)。 它只会被读取一次(在初始化时)。 我知道这个SO问题和ServletContext.getInitParameter()机制,但据我的理解,它们需要将数据捆绑在servlet包中(作为属性文件,或在web.xml指定) ),这使得升级servlet代码变得不方便。 servlet是否有任何“标准”接口来获取这种键/值配置数据? 如果编程接口在任何地方都相同,那就没问题,但设置配置数据的实际方式取决于所使用的实际servlet容器。 我更喜欢便携式解决方案,但我会满足于仅适用于Tomcat和Jetty的东西。

Servlet与REST

我需要在服务器端创建5个方法,这将使用二进制数据。 远程客户端是applet和JavaScript。 客户端将文件发送到服务器,服务器必须解析这些文件,然后以XML / JSON的forms返回响应。 所以我很困惑 – 在这种情况下使用REST服务是一种好习惯吗? 或者我应该使用servlet? 我的同事说我: “创建仅由一个应用程序使用的REST服务并不好。只有在许多应用程序使用REST时才能创建REST。而REST比servlet有一些缺点:REST比servlet慢;它更难以编写线程安全的REST比servlet“ 但是,我看到使用Servlet的一些缺点:我需要发送一个我想调用的函数名(即作为额外的HTTP参数发送函数名),然后在doPost方法中执行以下开关: switch(functionName) { case “function1”: function1(); break; case “function2” function2(); break; //…. more `case` statements…. } 在REST的情况下,我可以简单地使用不同的URL来实现不同的function。 此外,在REST的情况下,从服务器返回JSON / XML更方便。 谢谢。

RequestDispatcher用于远程服务器?

我正在尝试创建一个HttpServlet,它将所有传入的请求按原样转发给另一个在不同域上运行的serlvet。 如何实现这一目标? RequestDispatcher的forward()仅在同一服务器上运行。 编辑:我不能介绍任何依赖项。

在Content-Type中指定charset时,Jersey和@FormParam无法正常工作

看起来Jersey 2.0(使用servlet 3.1)在Content-Type标头中指定charset属性时无法解码参数。 例如,考虑以下端点: @POST @Path(“/hello”) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.APPLICATION_JSON) public Response hello(@FormParam(“name”) String name) { System.out.println(name); return ok(); } 此curl请求有效: curl -X POST -H “content-type: application/x-www-form-urlencoded” -d “name=tom” http://localhost:8080/sampleapp/hello 相反,以下请求不起作用, name参数为null : curl -X POST -H “content-type: application/x-www-form-urlencoded; charset=UTF-8” -d “name=tom” http://localhost:8080/sampleapp/hello 我认为内容类型中的charset=UTF-8添加会破坏我的代码。 编辑: 我打开了官方机票以防这是一个错误: https : //java.net/jira/browse/JERSEY-1978

spring mvc有response.write直接输出到浏览器吗?

我正在使用带有freetemplate的spring mvc。 在asp.net中,您可以使用Response.Write直接写入浏览器(“hello,world”); 你能在spring的mvc做这个吗?

java servlet:servlet中重定向和转发之间的区别

我正在使用servlet有两个方法重定向和转发两个都是发送请求到同一页但他们之间有什么区别。任何想法

使用Spring MVC HandlerInterceptorAdapter从HttpServletResponse记录响应主体(HTML)

我正在尝试记录(仅为了简单起见,现在是控制台写入)最终呈现的HTML将由HttpServletResponse返回。 (即正文)为此,我使用Spring MVC中的HandlerInterceptorAdapter,如下所示: public class VxmlResponseInterceptor extends HandlerInterceptorAdapter { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(response.toString()); } } 这按预期工作,我在控制台中看到HTTP响应标头。 我的问题是,是否有一种相对简单的方法可以将整个响应体(即最终呈现的HTML)记录到控制台,而无需使用PrintWriters,OutputStream等进行跳跃。 提前致谢。

开始和停止我的Vaadin网络应用程序的钩子?

我怎么知道我的Vaadin 7网络应用程序何时首次启动/启动,所以我可以做一些初始设置工作? 同样,我怎么知道我的网络应用何时结束,关机/退出?

配置Spring MVC控制器将文件发送到客户端

我认为我的情景很常见。 我有一个数据库,我希望我的Spring MVC应用程序接受控制器中的请求,调用数据库服务来获取数据并将该数据作为CSV文件发送到客户端。 我正在使用此处的JavaCSV库来协助此过程: http : //sourceforge.net/projects/javacsv/ 我发现了一些人做类似事情的例子,并拼凑出看似正确的东西。 但是,当我尝试这种方法时,并没有真正发生任何事情。 我认为将数据写入HttpServletResponse的outputStream就足够了,但显然,我遗漏了一些东西。 这是我的控制器代码: @RequestMapping(value=”/getFullData.html”, method = RequestMethod.GET) public void getFullData(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException{ List allRecords = compReqServ.getFullDataSet((String)session.getAttribute(“currentProject”)); response.setContentType(“data:text/csv;charset=utf-8”); response.setHeader(“Content-Disposition”,”attachment; filename=\yourData.csv\””); OutputStream resOs= response.getOutputStream(); OutputStream buffOs= new BufferedOutputStream(resOs); OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs); CsvWriter writer = new CsvWriter(outputwriter, ‘\u0009’); for(int i=1;i <allRecords.size();i++){ CompositeRequirement aReq=allRecords.get(i); […]