基于模型 - 视图 - 控制器(MVC)模式构建Java Web应用程序的框架。它从底层视图技术中提升灵活和分离的代码。
HeadersTooLargeException - 响应标头
我在 Spring mvc 的项目中实现了文件下载,在下载文件时,它在 tomcat 7 服务器上出现以下错误: org.apache.coyote.http11.HeadersTooLargeException:一次尝试...
org.hibernate.query.SemanticException
我有这样的疑问: 列表 findAllByProcessedIsTrueAndNatalIsOrSolarIs (布尔处理、整数出生、整数太阳能); 但我有这个错误: 引起的:java.lang.
方法 public Abstract util.List 的查询验证失败
我是 Spring Data JPA 的新手,所以我在编写查询时遇到了麻烦。我想从 movieID 中获取在某部电影中扮演角色的所有演员。 尝试此操作时,我在尝试时遇到错误
Spring MVC:没有预设内容类型为“null”的 [class com.gcu.model.OrderList] 转换器
我的 Spring MVC 应用程序遇到问题,我尝试返回 OrderList 类型的对象作为 HTTP 响应,但收到以下警告消息: 警告 21264 --- ...
Spring Boot应用程序自动下载JSP文件而不显示内容,如何解决?
我正在从事 Spring Boot Web 应用程序项目。 当我运行 Spring Boot Web 应用程序时,它运行良好,但是在浏览器中,当我超出此 Web 应用程序内容时,我的 jsp 文件会自动下载 ins...
我有一个 Spring MVC 应用程序(无需启动)。我正在使用 Spring MVC 6。 我正在尝试学习 @ResponseBody 标签,并在控制器中创建了我的 bean 类的对象并将其发送到响应中...
Spring 实践第 6 章/ch05:为什么 design.html 在没有将 @ModelAttribute 添加到 taco 方法参数的情况下在这里工作?
视图(design.html): https://github.com/habuma/spring-in-action-6-samples/blob/main/ch05/taco-cloud/src/main/resources/templates/design.html ... 查看(design.html): https://github.com/habuma/spring-in-action-6-samples/blob/main/ch05/taco-cloud/src/main/resources/templates/design.html ... <form th:method="POST" th:object="${taco}" th:action="@{/design}" id="tacoForm"> <span class="validationError" th:if="${#fields.hasErrors('ingredients')}" th:errors="*{ingredients}">Ingredient Error</span> ... 控制器: https://github.com/habuma/spring-in-action-6-samples/blob/main/ch05/taco-cloud/src/main/java/tacos/web/DesignTacoController.java public class DesignTacoController { ... @ModelAttribute(name = "taco") public Taco taco() { return new Taco(); } @GetMapping public String showDesignForm() { return "design"; } ... @PostMapping public String processTaco( @Valid Taco taco, Errors errors, @ModelAttribute TacoOrder order) { log.info(" --- Saving taco"); if (errors.hasErrors()) { return "design"; } Taco saved = tacoRepo.save(taco); order.addTaco(saved); return "redirect:/orders/current"; } } 据我所知,由于方法之前有 Taco 注释,将创建一个名为 taco 的新 @ModelAttribute(name = "taco") 对象并将其添加到模型中。这很好,因为我们需要一个空的 Taco 对象来用于 GET /design 请求(showDesignForm)。但是,当我们提交表单时,会再次创建一个新的 taco 并将其添加到模型中,并且因为我们没有将 @ModelAttribute 添加到 processTaco 的 taco 参数(@Valid Taco taco),视图将获得新鲜的炸玉米饼未由提交的表单数据填充。因此,在这种情况下,视图不应该正确显示当前/更改的 taco 信息(即更改的字段或错误信息)。但我测试了一下,发现它有效。 我搜索了很多关于@ModelAttribute的内容,但找不到上述困惑的任何答案。 对于 PostMapping,Spring 框架会自动从提交的表单数据创建 taco 对象,对其进行验证,然后提供给 processTaco 方法。您是否实际调试并查看提供给 processTaco 方法的 taco 对象中是否没有值?
异常发送上下文初始化事件到类org.springframework.web.context.ContextLoaderListener的监听器实例
我正在尝试实现 Spring Security 登录,并且尝试过类似的操作: spring-security.xml: 我正在尝试实现 Spring Security 登录,并且我尝试过类似的操作: spring-security.xml: <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> <http auto-config="true" use-expressions="true"> <intercept-url pattern="/login" access="permitAll" /> <intercept-url pattern="/logout" access="permitAll" /> <intercept-url pattern="/accessdenied" access="permitAll" /> <intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> <form-login login-page="/login" default-target-url="/list" authentication-failure-url="/accessdenied" /> <logout logout-success-url="/logout" /> </http> <authentication-manager alias="authenticationManager"> <authentication-provider> <user-service> <user name="lokesh" password="password" authorities="ROLE_USER" /> </user-service> </authentication-provider> </authentication-manager> </beans:beans> web.xml: <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-servlet.xml, /WEB-INF/spring-security.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring Security --> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 我正在使用 spring 版本:3.1,我在上面的 xml 文件中收到错误。 错误: May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/spring-security.xml]; nested exception is java.lang.NoClassDefFoundError: org/springframework/security/web/util/AntPathRequestMatcher at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:377) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:278) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: java.lang.NoClassDefFoundError: org/springframework/security/web/util/AntPathRequestMatcher at org.springframework.security.config.http.MatcherType.<clinit>(MatcherType.java:22) at org.springframework.security.config.http.HttpConfigurationBuilder.<init>(HttpConfigurationBuilder.java:105) at org.springframework.security.config.http.HttpSecurityBeanDefinitionParser.createFilterChain(HttpSecurityBeanDefinitionParser.java:116) at org.springframework.security.config.http.HttpSecurityBeanDefinitionParser.parse(HttpSecurityBeanDefinitionParser.java:81) at org.springframework.security.config.SecurityNamespaceHandler.parse(SecurityNamespaceHandler.java:88) at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1414) at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1404) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140) at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) ... 28 more May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext start SEVERE: Error listenerStart May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext start SEVERE: Context [/HRportal] startup failed due to previous errors May 5, 2014 12:33:47 PM org.apache.catalina.core.ApplicationContext log INFO: Closing Spring root WebApplicationContext May 5, 2014 12:33:47 PM org.apache.catalina.core.StandardContext listenerStop SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1066) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1040) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:534) at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3882) at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4516) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4380) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 谁能纠正我,我哪里错了? 您的类路径中缺少 spring-security-web-3.1.X.RELEASE.jar 如果您的项目中存在另外两个 ContextLoaderListener,就会发生这种情况。 例如:在我的例子中,使用 存在 2 ContextLoaderListener java配置 web.xml 因此,从您的项目中删除任何一个 ContextLoaderListener 并运行您的应用程序。 如果您确定没有弄乱罐子,请清理项目并执行mvn clean install。这应该可以解决问题。 这个答案很有用 1 如果您确定没有弄乱 jar,请清理项目并执行 mvn clean install。这应该可以解决问题。 我做了这件事,但如果我完成了 Maven 更新,它会再次引发
在 Spring-6 中创建一个 Multipartresolver bean
在spring5中我们可以创建一个像下面这样的bean。 在 spring5 中我们可以创建如下所示的 bean。 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize"> <value>1073741824</value> </property> </bean> 但是这个 CommonsMultipartResolver 在 spring-6 中被删除。 因此我们有 org.springframework.web.multipart.support.StandardServletMultipartResolver 用于分段文件上传。但是如何设置 maxUploadSize 属性,因为该属性在上面的类中不可用? 请遵循 JEE 文档 或检查 StandardServletMultipartResolver 文档。 您可以使用web.xml <multipart-config> <location>/tmp</location> <max-file-size>26214400</max-file-size> <max-request-size>31457280</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config> 或者javax servlet注释: @WebServlet("/uploadServlet") @MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024, maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5) public class UploadServlet extends HttpServlet { // ... 或者 spring 注解配置: public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { // ... @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { // Optionally also set maxFileSize, maxRequestSize, fileSizeThreshold registration.setMultipartConfig(new MultipartConfigElement("/tmp")); } }
最简单的 spring 安全配置破坏了我正在运行的 spring-boot 应用程序
我有一个可以工作的 Spring Boot 应用程序,并且可以进行单元测试。 如果我为 Spring Security 添加任何配置,则无法提供任何页面,它只是尝试提供静态内容,而控制器永远不会提供服务
我是否需要自定义 Oracle Dialect 以及自定义 DialectProvider 才能使用 Oracle 数据库制作 Spring Boot Java Web 应用程序?
我正在制作一个学校项目,它要求我们为 Oracle 数据库制作某种 Web 应用程序。我的团队选择了 MVC 风格的 Spring Boot Java 和 Maven,我负责后台...
在SpringBoot应用程序中设置WebSecurityConfig
我正在SpringBoot应用程序中设置WebSecurityConfig。 @配置 @EnableWebSecurity 公共类 WebSecurityConfig 扩展 WebSecurityConfigurerAdapter { .. } 但我有这个错误无法解决
我与Spring合作并得到了下面的实体 包be.simonwyns.webapplicatie.model; 导入 jakarta.persistence.*; @实体 公开课目标{ @ID @GenerateValue(策略 = GenerationType.
我创建了一个 Employee Service 实现类以及一个 Employee Service 接口,作为 Springboot 学习的一部分。我的数据库表中有数据,但我得到以下信息...
您还会将哪些其他库或工具添加到 Spring/Hibernate 堆栈中以改进快速应用程序开发?
我的工作团队维护着一个基于 Spring 和 Hibernate 编写的相当大的 Web 应用程序。我们即将开始对网站进行一些相当大规模的更改,我们着迷于快速的
Mongock 变更日志文件在本地系统中执行,但部署后不在服务器上执行
能够在本地成功执行 Mongock 变更日志文件,但当我将应用程序 jar 部署到服务器时,变更日志文件无法执行。我也没有收到任何错误。我能看到
Spring MVC 和 UTF-8:如何使用瑞典语特殊字符?
我尝试在我的数据库中找到带有特殊瑞典语字符“bäck”的单词, 我有一个jsp页面: <%@ page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %> ... 我尝试在我的数据库中找到带有特殊瑞典语字符“bäck”的单词, 我有一个 jsp 页面: <%@ page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %> ... <form name="mainform" action="/web/admin/users/"> <input id="keywords" type="text" name="keywords" size="30" value="${status.value}" tabindex="1" /> <button class="link" type="submit">Search</button> </form> 过滤器: public class RequestResponseCharacterEncodingFilter extends OncePerRequestFilter { private String encoding; private boolean forceEncoding; protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { request.setCharacterEncoding(this.encoding); response.setCharacterEncoding(this.encoding); filterChain.doFilter(request, response); } } web.xml <web-app ...> ... <filter> <filter-name>encodingFilter</filter-name> <filter-class>test.testdomain.spring.RequestResponseCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ... </web-app> 当我开始找到“bäck”这个词时,它看起来像这样bäck。请求被编码为 UTF-8: 但就在我退出调试器过滤器中的 doFilterInternal 方法之前,我看到: 我做错了什么?为什么文本没有编码为 UTF-8? 编辑:这很奇怪,我刚刚尝试在 Chrome 和 Mozilla Firefox 中查询,效果很好,所以在我看来,我只在 Internet Explorer 中遇到这个问题 编辑:Internet Explorer 给我这个字符串:b%C3%A4ck,但 Mozilla Firefox 和 Chrome 给我这个字符串:b%E4ck。他们明显不同,为什么? 您的屏幕截图表明您的搜索关键字 bäck 作为 URL 的一部分作为 URL 参数发送。它还表明这项工作似乎正确地采用了 UTF-8 URL 编码。您在调试器中返回的字符串是典型的 UTF-8 编码字节的 ISO-Latin 解码:例如HTTPServletRequest 解析器使用 ISO-Latin 解析 UTF-8 编码的字符串。 因此,您的 ServletFilter 对解释它没有任何帮助: request.setCharacterEncoding(this.encoding); response.setCharacterEncoding(this.encoding); 因为正如 javadoc 所说:这些方法适用于 HTTP 请求的正文,而不是其 URL。 /** * Overrides the name of the character encoding used in the body of this * request. This method must be called prior to reading request parameters * or reading input using getReader(). Otherwise, it has no effect. * 查看 URL 参数解析是 Servlet 容器的职责,您应该查看的设置可能是容器级别的设置。 例如,在 Tomcat 上,如文档中所述: http://tomcat.apache.org/tomcat-7.0-doc/config/http.html : URIEncoding :指定在 %xx 解码 URL 后用于解码 URI 字节的字符编码。如果未指定,将使用 ISO-8859-1。 默认情况下,它使用 ISO-8859-1。您应该将其更改为 UTF-8,然后,您的请求参数将从 servlet 容器中正确解析,并传递给 HTTPServletRequest 对象。 编辑:当您看到浏览器行为不一致时,您可以检查 HTML 表单的一致性。请确保 您的 HTTP Content-Type 标头和定义字符集的 HTML“元”标记在声明字符集时都存在且一致。 (考虑到您的 servlet 过滤器,它们都应该是 UTF-8) 您实际上尊重响应正文中的字符集声明(您实际上从 JSP 中写入 UTF-8 字符串 - 或其他任何内容) 问题:如果服务部署在docker容器中,如何处理瑞典字符。 按照以下步骤处理瑞典字符: 请求映射中的端点使用以下属性 produces = {"application/json;charset=UTF-8", "application/json;charset=UTF-8"} 在 application.properties 中插入以下行 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true 在容器中安装语言环境,添加以下行 运行 apt-get -y 安装语言环境 设置区域设置,您可以更改为 sv_SE 但以下操作也将起作用,因为它启用了 UTF-8 RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ locale-gen ENV LANG en_US.UTF-8 ENV 语言 en_US:en ENV LC_ALL en_US.UTF-8 在主类中添加语言环境: 导入java.util.Locale; Locale locale = new Locale.Builder().setLanguage("sv").setRegion("SE").build(); Locale.setDefault(区域设置)
在 Spring 应用程序中集成测试期间如何处理(或阻止)电子邮件的发送?
也许我没有使用正确的搜索关键字,但我在集成测试中找不到有关电子邮件主题的任何内容。 “邮件”这个词在测试文档中甚至没有出现过一次。 我...
RestController 上的 Java SpringBoot @PathVariable
我有以下@RestController: 包 io.github.paulmarcelinbejan.coandaairlines.reservationsystem.adapters.inbound.controller.rest; 导入java.util.List; 导入org.springframework.http。
403 迁移到 Spring Boot 3 后禁止使用基本身份验证的挂起控制器方法
我最近将 Spring Boot MVC Kotlin 项目迁移到 Spring Boot 3。基本身份验证用于 REST 控制器(通过 SecurityFilterChain 配置 - 也从 WebSecurityConfigurerAdap 迁移...