Tag: spring mvc

在文件下载时返回字节数组或servlet输出流之间是否有区别?

我想知道当Sprin MVC控制器方法返回字节数组byte[]来表示下载文件或者将InputStream对象复制到ServletOutputStream对象时是否存在真正的区别? 我问的原因是我必须确保在下载大文件时不会出现任何OutOfMemory错误。 通过ServletOutputStream传递文件是否有助于避免它? 传递字节数组: byte[] download() { return getUrlContentAsByteArray(); } 传入ServletOutputStream: void download(HttpServletResponse response) { InputStream content = getUrlContentAsStream(); ServletOutputStream outputStream = response.getOutputStream(); response.reset();response.setContentType(ContentType.APPLICATION_OCTET_STREAM.getMimeType()); IOUtils.copyLarge(inputStream, outputStream); }

Spring MVC中的自定义授权

我们有一个应用程序,用户可以由管理员创建用户,并将角色分配给特定类型的实体。 例如,如果实体名为Student ,则应用程序的用户具有不同级别的权限,例如: 查看者 – 查看学生详细信息 编辑 – 编辑学生详细信息 出口商 – 出口学生详细信息 执行上述操作的URI如下所示: GET – /content/{classId}/{studentId}/view PUT – /content/{classId}/{studentId} GET – /content/{classId}/{studentId}/export POST – /content/{classId}/{studentId}/export 请注意,URI具有动态性质。 此外,给定用户User A可以为Class 1分配VIEWER角色,为Class 2分配EXPORTER 。 在我的spring-security配置中,我只定义了两个权限 – ADMINISTRATOR和USER 。 ADMINISTRATOR – 可以访问所有内容 USER – 可以访问除/admin/* URI之外的所有内容。 角色VIEWER , EDITOR , EXPORTER不是弹簧安全角色。 现在我遇到了一个问题,同时限制用户访问他们没有权限的资源。 此外,如果用户没有正确的EXPORTER ,他甚至不应该看到导出按钮(放在应用程序的某个位置)。 也许我可以使用spring的security标记库来做到这一点。 但这完全是另一个问题。 我可以让他们知道spring-security,但问题是我在哪里读取{studentId} ( @PathVariable […]

为Spring MVC / AOP应用程序实现动态菜单

我希望为我的Spring MVC应用程序实现动态可更改的菜单(在添加带注释的方法或控制器时更新)。 我想要的是引入新的注释( @RequestMenuMapping ),它将转到@Controller bean及其方法(就像@RequestMapping一样)。 Heres是我想要的, User类,生成菜单之类的 Users Index | List | Signup | Login 使用以下代码: @Controller @RequestMapping(“user”) @RequestMenuMapping(“Users”) public class User { @RequestMapping(“”) @RequestMenuMapping(“Index”) public String index(/* no model here – just show almost static page (yet with JSP checks for authority)*/) { return “user/index.tile”; } @RequestMapping(“list”) @RequestMenuMapping(“List”) public String list(Model model) { […]

在spring-data-rest中阻止HTTP方法

我正在使用spring-data-rest。 给出以下存储库: @RepositoryRestResource public interface MyRepository extends PagingAndSortingRepository {} save()方法上的注释@RestResource(exported = false)使框架在使用POST,PUT和PATCH方法时返回405 Method Not Allowed错误。 我的问题:如何在PUT方法上返回405错误,而此存储库仍然允许POST和PATCH? 谢谢 !

Spring Boot忽略@JsonDeserialize和@JsonSerialize

我有一个带有RESTful端点的Spring Boot应用程序,我想为joda-time添加自定义序列化程序,但我无法让应用程序默认Jackson serailzier识别我的自定义端口。 我使用@RepositoryRestResource创建了RESTFul端点 @RepositoryRestResource(collectionResourceRel = “x”, path = “x”) public interface XRepository extends PagingAndSortingRepository { } 然后我有一个GET调用来返回所有对象X: HTTP://本地主机:8181 / X 这是我的序列化器: @Component public class JsonDateSerializer extends JsonSerializer { private static DateTimeFormatter formatter = DateTimeFormat.forPattern(“dd/MM/yyyy”); @Override public void serialize(DateTime value, JsonGenerator gen, SerializerProvider arg2) throws IOException, JsonProcessingException { gen.writeString(formatter.print(value)); } } 我将它添加到属性Getter,如下所示: @JsonSerialize(using=JsonDateSerializer.class) public DateTime […]

与Thymeleaf的utf8 charset

当使用Spring和Thymeleaf时,我所有的西里尔字符都显示为????? 在页面上。 运用 @RequestMapping(value = “/login”, method = RequestMethod.GET, produces = “text/html; charset=utf-8”) 正如在此建议的那样: https : //stackoverflow.com/a/11866822/1479414 ,这里: https : //stackoverflow.com/a/12023816/1479414没有帮助。 如何解决这个问题?

将请求范围的bean注入另一个bean

我想创建一个在请求生命周期中唯一的UUID。 为此,我使用@Scope(“request”)注释创建一个UUID bean。 @Bean @Scope(scopeName = WebApplicationContext.SCOPE_REQUEST) public UUID requestUUID() { return UUID.randomUUID(); } 我想在我的控制器中访问这个bean。 所以我用@Autowired注入它。 这很好用。 @Controller public class DashboardController { @Autowired UUID uuid; @Autowired WelcomeMessageService welcomeMessageService; @Autowired IssueNotificationService issueNotificationService; @RequestMapping(“/”) public String index(Model model) throws InterruptedException, ExecutionException { System.out.println(uuid); PortalUserDetails userLog = getPortalUserDetails(); BusinessObjectCollection welcomeMessages = welcomeMessageService.findWelcomeMessages( 20, 0, userLog.getZenithUser(), userLog.getConnectionGroup().getConnectionGroupCode(), “FR”); if(welcomeMessages!=null) […]

如何在任何在线服务器中部署Spring框架后端和Angular 2前端应用程序?

如果我的方式是错误的,请更正。 在我的Web应用程序中,我没有使用jsp页面来开发用户界面。 相反,我使用的是html,css和Angular 2,前端项目结构与后端分开。 虽然我能够使用由SpringMVC后端提供服务的Angular CLI开发一个简单的项目。 前端使用端口4200,后端在端口8080上运行。我已设法从Angular 2接收并提供请求到SpringMVC。 在本地模式下,这些工作正常,现在我想让它们在实时服务器上托管。 如何分别发布SpringMVC后端和Angular 2前端但在同一域上运行? 我没有使用SpringBoot,前端和后端都在单独的文件夹中。 我不想在相同的项目结构中组合两者并生成war文件并进行部署。 开发SpringMVC后端和Angular-2后端并在在线服务器中部署它们的最佳实践是什么?

Spring @ExceptionHandler不捕获AccessDeniedException

我有一个使用以下代码设置的exception处理程序 @ExceptionHandler(Throwable.class) public @ResponseBody CustomResponse handleException(Throwable throwable){ // handles exception, returns a JSON } 我使用的是Spring Security 3.1。 当我尝试在没有身份validation的情况下执行操作时,应用程序会抛出AccessDeniedException。 它永远不会出现在这种方法中。 但与其他例外情况一起工作正常 这是应该工作的方式吗? 或者我的代码有问题吗? 这看起来像一个解决方案。 但如果我能在一个点上处理exception会更好。 这是我的配置文件 //intercept urls UPDATE 这里用户未经过身份validation(ROLE_ANONYMOUS)。 当我尝试访问受保护的页面时,它会将我重定向到登录URL。 我的问题在于,我进行了一次AJAX调用。 因此,重定向到返回ModelAndView的方法不起作用。 这附近有工作吗?

Spring无法在servlet-context和contextConfigLocation bean之间看到bean

我有一个spring mvc项目设置如下: appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring-contexts/servlet-context.xml 1 contextConfigLocation /WEB-INF/spring-contexts/configuration-context.xml 如果我在configuration-context.xml中创建一个bean并在servlet-context.xml中引用一个bean,它就无法找到它。 这些是作为两个不同的背景创建的吗? 为什么这种情况一般会发生/这样?