servlets 相关问题

Servlet是在服务器机器上运行的Java应用程序编程接口(API),它可以拦截客户端发出的请求,并可以相应地生成/发送响应。

使用控制器 servlet 过滤使用情况

对于带有 JSP 和 servlet 的非常简单的 MVC,过滤器的功能是什么? 下面的示例中有一个控制器 servlet,然后每个 JSP 都会呈现不同的视图。该服务...

回答 1 投票 0

使用 ServletUriComponentsBuilder 模拟测试返回新添加实体的位置和 201 状态代码的 post 方法

@PostMapping(路径=“/用户/{用户名}/事件”) 公共 ResponseEntity createEventsForUser(@PathVariable String 用户名, @RequestBody @Valid EventBean event){ 活动。 @PostMapping(path= "/users/{username}/events") public ResponseEntity<Object> createEventsForUser(@PathVariable String username, @RequestBody @Valid EventBean event){ event.setUsername(username); EventBean savedEvent = eventJPAService.save(event); URI location = ServletUriComponentsBuilder .fromCurrentRequest() .path("/{eventId}") .buildAndExpand(savedEvent.getEventId()) .toUri(); return ResponseEntity.created(location).build(); } 这是我想使用 Junit 和 mockito 测试的 post 方法的代码。我该怎么做? 我试过这个: @Test public void testCreateEventsForUser() { String username = "testuser"; EventBean newEvent = new EventBean(404, "testuser","New Event", "Planning", LocalDate.now()); int expectedEventId = 404; // Mock the behavior of eventJPAService.save when(eventJPAService.save(newEvent)).thenReturn(new EventBean(expectedEventId,"testuser" ,"New Event", "Planning", LocalDate.now()); ResponseEntity<Object> response = eventController.createEventsForUser(username, newEvent); // Verify the response status and location assertEquals(201, response.getStatusCodeValue()); URI location = response.getHeaders().getLocation(); assertEquals("/users/testuser/events/404", location.getPath()); } 出现错误: 当前没有 ServletRequestAttributes 要解决问题,您可以创建一个模拟 HttpServletRequest 并使用 RequestContextHolder 将其设置为当前请求属性,因此测试用例将如下所示(我还更新了已弃用的用于检查 statusCode 的内容): @Test public void testCreateEventsForUser() { MockHttpServletRequest request = new MockHttpServletRequest(); request.setRequestURI("/users/testuser/events"); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); String username = "testuser"; EventBean newEvent = new EventBean(404, "testuser","New Event", "Planning", LocalDate.now()); int expectedEventId = 404; // Mock the behavior of eventJPAService.save when(eventJPAService.save(newEvent)).thenReturn(new EventBean(expectedEventId,"testuser" ,"New Event", "Planning", LocalDate.now()); ResponseEntity<Object> response = eventController.createEventsForUser(username, newEvent); // Verify the response status and location assertEquals(201, response.getStatusCode().value()); URI location = response.getHeaders().getLocation(); assertNotNull(location); assertEquals("/users/testuser/events/404", location.getPath()); }

回答 1 投票 0

生成的servlet错误:-source 1.5不支持默认方法(使用-source 8或更高版本启用默认方法)

我正在使用Netbeans 8.2版本来练习我的spring MVC项目。netbeans提供的默认IDK版本是1.8,我正在使用这个项目来学习表单验证。我正在使用所有的天秤座...

回答 1 投票 0

ServletContext.getRealPath("pictures") 返回 tmp 目录? JBoss

我用seamgen(也用gui)制作了一个应用程序,并在应用程序的根目录中创建了一个文件夹“图片”用于存储个人资料图像。 当我评估 ServletContext.getRealPath("pictures") 时

回答 3 投票 0

404 错误 - 尝试访问我的 Servlet 时显示错误

主页工作正常,但是,当我尝试访问我正在测试的两个 servlet 之一时,出现 404 错误。我使用IDE intellij,tomcat 9,maven,servlet版本5, HTTP 状态 404...

回答 1 投票 0

servlet 中的 Http 错误 404:找不到该网址的网页

PrintNamesServlet.java: 该 Servlet 打印输入的用户名称。 导入 javax.servlet.ServletException; 导入 javax.servlet.annotation.WebServlet; 导入 javax.servlet.http.HttpServlet; 我...

回答 2 投票 0

Spring 5 中机密客户的 PKCE(非反应式)

我正在尝试在 Spring Boot 5 中的 oAuth 客户端上启用 PKCE。我能找到的示例适用于反应式客户端,如下所示: SecurityWebFilterChain springSecurityFilterChain(

回答 2 投票 0

Java Web App - 尝试运行 JSP 文件 (IntelliJ) 时出现错误 404

当我尝试运行 JSP 文件(右键单击文件名并在 IntelliJ 中运行)时,我得到 404 我的JSP代码: `<%@ page contentType="text/html; charset=ISO-8859-1" pageEncoding=...

回答 1 投票 0

如何解决数字格式异常?

index.html 输入第一个数字: 输入第二个数字... index.html <!DOCTYPE html> <html> <body> <form action="add"> Enter 1st number:<input type="text" name="num1"><br> Enter 2st number:<input type="text" name="num1"><br> <input type="submit"> </form> </body> </html> AddServlet.java 这是 servlet 代码。 package com.adithya; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AddServlet extends HttpServlet { public void service(HttpServletRequest req,HttpServletResponse res) throws IOException { int i=Integer.parseInt(req.getParameter("num1")); int j=Integer.parseInt(req.getParameter("num2")); int k=i+j; PrintWriter out=res.getWriter(); out.println("result is"+k); } } 我正在尝试获取结果,但它显示了如下所示的异常。我无法理解例外情况。 ** 例外** 这显示了这样的异常。我无法识别问题所在。 java.lang.NumberFormatException: Cannot parse null string java.base/java.lang.Integer.parseInt(Integer.java:630) java.base/java.lang.Integer.parseInt(Integer.java:786) com.adithya.AddServlet.service(AddServlet.java:19) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 我不明白这是什么错误。我试图从 2 天开始解决这个问题。请任何人帮助我解决这个问题。但它不起作用。 您有 2 个相同的名字 num1,并且您正在尝试呼叫不在场的 num2。 Enter 2st number:<input type="text" name="num1"><br> 关于: Enter 2st number:<input type="text" name="num2"><br>

回答 1 投票 0

将文件写入ServletOutputStream的最有效方法

ServletOutputStream 输出 = response.getOutputStream(); 输出.write(字节[]); 将文件写入 javax.servlet.ServletOutputStream 最有效的方法是什么? 编辑: 这样不是更有效吗...

回答 5 投票 0

导入javax.annotation.Resource无法解析

我尝试通过添加丢失/不必要的罐子来解决,但对我来说没有任何作用。如果您知道如何解决此问题,请提供帮助...提前谢谢您。 我使用的是安装的 JDK 9.0.4...

回答 4 投票 0

无法在运行 Amazon EC2 Windows 实例的 Wildfly 上运行 war 文件

我正在使用 Spring Boot,当我在 Wildfly 服务器上的本地 Windows 系统上测试它时,我的 API 工作正常,但当我在 Amazon EC2 上运行的 Wildfly 服务器上部署相同的 war 文件时

回答 1 投票 0

Java Server Page 表达式标签给我一个错误

我第一次编写JSP代码。 当我声明一个表达式语句时,它给了我一个错误; sum 无法解析为变量。 这是我的代码供您参考 <%@ page langu...

回答 1 投票 0

避免在 servlet 中重新加载页面

我构建了一个 profile.jsp,其中有 emailPopup 和 otpPopup。 当我在 emailPopup 中输入电子邮件时,电子邮件将发送到 servlet 并重定向回 profile.jsp。重新加载后我应该再次

回答 1 投票 0

${pageContext.request.contextPath} 如何在本地和远程工作?

${pageContext.request.contextPath} 如何在本地和远程工作?

回答 1 投票 0

IntelliJ Maven 面板“插件”区域中的 Jetty 子菜单

以前,我在IntelliJ的Maven面板中看到过Jetty子菜单。在生命周期、插件和依赖关系层次结构的三重奏中,元素的插件列表将包含 Jetty 项。我...

回答 1 投票 0

Eclipse 抱怨找不到“jakarta.servlet.http.HttpServlet”

我正在拿起一个旧项目,它有很多旧的依赖项。 我正在使用“面向企业 Java 和 Web 开发人员的 Eclipse IDE”。 将源码导入到Eclipse后,Eclipse是

回答 5 投票 0

Servlet/Web 中 JDBC 连接对象返回 null

我遇到了 servlet 问题 – 我的数据库连接变为空。奇怪的是,相同的数据库代码在另一个类中运行良好。我已经仔细检查了我的配置,加载了...

回答 1 投票 0

无法创建 PoolableConnectionFactory [JSP Servlet 和 MySQL]

我遇到以下错误:java.sql.SQLException:无法创建 PoolableConnectionFactory (无法打开文件:C:\AppServers\glassfish5\glassfish\domains\domain1/config/keystore.jks [密钥库是

回答 2 投票 0

Servlet URL 映射和过滤器映射——无法让两者一起工作

在我的 web.xml 中,我有一个 servlet 映射: 我的Servlet servlets.MyServlet 在我的 web.xml 中,我有一个 servlet 映射: <servlet> <servlet-name>My Servlet</servlet-name> <servlet-class>servlets.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>My Servlet</servlet-name> <url-pattern>/dir/*</url-pattern> </servlet-mapping> 我还有一个过滤器: <filter> <filter-name>My Filter</filter-name> <filter-class>filters.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>My Filter</filter-name> <url-pattern>*.data</url-pattern> </filter-mapping> 如果我访问 /dir 或 /dir/foo,servlet 会做出响应。如果我访问 /somewhere/file.data,过滤器会过滤响应。如果我访问 /dir/foo.data,我只会收到 404 错误。 我尝试颠倒 web.xml 文件中 servlet 和过滤器的顺序,但这没有什么区别。看来我可以让 servlet 响应,或者让过滤器过滤响应,但不能两者兼而有之。 谁能告诉我该怎么做才能让 servlet 响应并让过滤器处理 servlet 响应? 没有简单的方法可以解决这个问题,因为过滤器映射似乎总是优先于 servlet 映射。 (我在 servlet 规范中看不到任何强制执行此操作的内容,但这就是它的工作方式。)我找到的唯一解决方案是完全摆脱过滤器并将其功能合并到 servlet 中。 我现在有一个 servlet,它可以响应 /dir/* 和 *.data。它检查请求 URI,如果它以 /dir/ 开头,它会动态生成响应,否则它只处理相应的文件。然后,如果 URI 以 .data 结尾,它将以与过滤器相同的方式预处理响应。 缺点是这会导致维护问题,因为 servlet 需要知道它在 web.xml 文件中配置为响应哪些模式。为了最大限度地减少问题,servlet 映射现在如下所示: <servlet> <servlet-name>My Servlet</servlet-name> <servlet-class>servlets.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>My Servlet</servlet-name> <!-- If the patterns below are changed, the "prefixes" and "suffixes" list in the servlet source code need to be updated to match, and the servlet needs to be recompiled. --> <url-pattern>/dir/*</url-pattern> <url-pattern>*.data</url-pattern> </servlet-mapping> 在 servlet 中我有这个: public static final String[] prefixes = new String[] { "/dir/" }; public static final String[] suffixes = new String[] { ".data" }; 因此 Servlet 可以将 URI 与每个数组的内容进行匹配。虽然有点乱,但这是我能做的最好的了。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.