คำถามติดแท็ก spring-mvc

เฟรมเวิร์กสำหรับการสร้างเว็บแอ็พพลิเคชัน Java ตามรูปแบบ Model-View-Controller (MVC) มันส่งเสริมรหัสที่ยืดหยุ่นและแยกได้จากเทคโนโลยีมุมมองพื้นฐาน

9
คำอธิบายประกอบ @Valid ระบุอะไรในฤดูใบไม้ผลิ
ในตัวอย่างต่อไปนี้ScriptFileพารามิเตอร์ถูกทำเครื่องหมายด้วย@Validคำอธิบายประกอบ อะไร@Validคำอธิบายประกอบทำอย่างไร @RequestMapping(value = "/scriptfile", method = RequestMethod.POST) public String create(@Valid ScriptFile scriptFile, BindingResult result, ModelMap modelMap) { if (scriptFile == null) throw new IllegalArgumentException("A scriptFile is required"); if (result.hasErrors()) { modelMap.addAttribute("scriptFile", scriptFile); modelMap.addAttribute("showcases", ShowCase.findAllShowCases()); return "scriptfile/create"; } scriptFile.persist(); return "redirect:/scriptfile/" + scriptFile.getId(); }

8
ฉันจะรับ Session Object ใน Spring ได้อย่างไร
ผมค่อนข้างใหม่ในฤดูใบไม้ผลิและฤดูใบไม้ผลิการรักษาความปลอดภัย ฉันพยายามเขียนโปรแกรมที่ฉันต้องการรับรองความถูกต้องของผู้ใช้ที่ส่วนท้ายของเซิร์ฟเวอร์โดยใช้ Spring security ฉันคิดสิ่งต่อไปนี้: public class CustomAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider{ @Override protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken) throws AuthenticationException { System.out.println("Method invoked : additionalAuthenticationChecks isAuthenticated ? :"+usernamePasswordAuthenticationToken.isAuthenticated()); } @Override protected UserDetails retrieveUser(String username,UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { System.out.println("Method invoked : retrieveUser"); //so far so good, i can authenticate user here, …

7
วิธีปิดการใช้งาน Spring Security สำหรับ URL เฉพาะ
ฉันใช้ระบบรักษาความปลอดภัยสปริงแบบไม่ระบุสถานะ แต่ในกรณีของการสมัครใช้งานฉันต้องการปิดใช้งานการรักษาความปลอดภัยสปริงฉันปิดการใช้งานโดยใช้ antMatchers("/api/v1/signup").permitAll(). แต่ใช้งานไม่ได้ฉันได้รับข้อผิดพลาดด้านล่าง: message=An Authentication object was not found in the SecurityContext, type=org.springframework.security.authentication.AuthenticationCredentialsNotFoundException ฉันคิดว่านี่หมายความว่าตัวกรองความปลอดภัยของสปริงกำลังทำงาน ลำดับ URL ของฉันจะเป็น "/ api / v1" เสมอ การกำหนดค่าสปริงของฉันคือ @Override protected void configure(HttpSecurity http) throws Exception { http. csrf().disable(). sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS). and(). authorizeRequests(). antMatchers("/api/v1/signup").permitAll(). anyRequest().authenticated(). and(). anonymous().disable(); http.addFilterBefore(new AuthenticationFilter(authenticationManager()), BasicAuthenticationFilter.class); } ตัวกรองการพิสูจน์ตัวตนของฉันคือ @Override public void doFilter(ServletRequest …

16
CORS พร้อมสปริงบูตและเชิงมุม js ไม่ทำงาน
ฉันพยายามเรียกจุดสิ้นสุด REST บนแอปพลิเคชันหนึ่ง (แอปพลิเคชันสปริงบูต) จากอีกแอปพลิเคชัน (angularjs) แอปพลิเคชันกำลังทำงานบนโฮสต์และพอร์ตต่อไปนี้ แอปพลิเคชัน REST โดยใช้สปริงบูต http://localhost:8080 แอปพลิเคชัน HTML โดยใช้ angularjs http://localhost:50029 ฉันกำลังใช้spring-securityกับแอปพลิเคชันสปริงบูตด้วย จากแอปพลิเคชัน HTML ฉันสามารถตรวจสอบสิทธิ์กับแอปพลิเคชัน REST ได้ แต่หลังจากนั้นฉันก็ยังไม่สามารถเข้าถึงปลายทาง REST ใด ๆ ตัวอย่างเช่นฉันมีบริการ angularjs ที่กำหนดไว้ดังนี้ adminServices.factory('AdminService', ['$resource', '$http', 'conf', function($resource, $http, conf) { var s = {}; s.isAdminLoggedIn = function(data) { return $http({ method: 'GET', url: …

7
Model ใน ModelAndView จาก Spring MVC คืออะไร
มีฟังก์ชันพื้นฐานนี้ protected ModelAndView handleRequestInternal(...) { ... return new ModelAndView("welcomePage", "WelcomeMessage", message); } ฉันรู้ว่าสิ่งนี้จะส่งคืน modelandView ฉันรู้ว่านั่นwelcomePageคือ Viewname ของฉันซึ่งหมายความว่าwelcomepage.jspจะมีการเรียกชื่อ แต่ฉันสับสนกับ Model part คืออะไร คืออะไรWelcomeMessageและmessageและวิธีการแบบการทำงานในสถานการณ์ที่?

18
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
ฉันใช้spring 3.1.0.RELEASEและคอนเทนเนอร์ servlet ของฉันคือtomcat 7และ IDE ของฉันคือeclipse indigo และ jar spring-webmvc-3.1.0.RELEASE.jarซึ่งมีDispatcherServlet อยู่ในโฟลเดอร์ lib และเมื่อ เรียกใช้แอปพลิเคชันฉันได้รับข้อยกเว้น: java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:126) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957) at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284) at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) โปรดแจ้งว่าเหตุใดฉันจึงได้รับข้อยกเว้นนี้และวิธีแก้ไข แก้ไข: ต่อไปนี้เป็นไฟล์การกำหนดค่าของฉัน: …

4
เมื่อใดควรใช้ @RestController vs @RepositoryRestResource
ฉันได้รับการดูตัวอย่างต่างๆของวิธีการใช้ฤดูใบไม้ผลิที่มีส่วนที่เหลือ เป้าหมายสุดท้ายของเราคือการHATEOAS/HALตั้งค่าSpring ฉันได้เห็นสองวิธีที่แตกต่างกันในการเรนเดอร์RESTภายในSpring ผ่าน@RestControllerภายในคอนโทรลเลอร์ ผ่าน@RepositoryRestResourceภายใน Repository สิ่งที่ฉันกำลังดิ้นรนเพื่อค้นหาคือทำไมคุณถึงใช้อีกอันหนึ่ง เมื่อพยายามที่จะใช้HALสิ่งที่ดีที่สุด? แบ็กเอนด์ฐานข้อมูลของเราคือNeo4j

5
ส่งข้อความถึงผู้ใช้เฉพาะบน Spring Websocket
จะส่งข้อความ websocket จากเซิร์ฟเวอร์ไปยังผู้ใช้เฉพาะได้อย่างไร? เว็บแอปของฉันมีการตั้งค่าความปลอดภัยแบบสปริงและใช้ websocket ฉันพบปัญหายุ่งยากพยายามส่งข้อความจากเซิร์ฟเวอร์ไปยังผู้ใช้ที่ระบุเท่านั้น ความเข้าใจของฉันจากการอ่านคู่มือมาจากเซิร์ฟเวอร์ที่เราสามารถทำได้ simpMessagingTemplate.convertAndSend("/user/{username}/reply", reply); และในฝั่งไคลเอ็นต์: stompClient.subscribe('/user/reply', handler); แต่ฉันไม่สามารถเรียกใช้การเรียกกลับการสมัครรับข้อมูลได้ ฉันได้ลองเส้นทางต่างๆมากมาย แต่ไม่มีโชค ถ้าฉันส่งไปที่/ topic / replyมันใช้งานได้ แต่ผู้ใช้ที่เชื่อมต่ออื่น ๆ ทั้งหมดจะได้รับมันด้วย เพื่อแสดงปัญหาฉันได้สร้างโปรเจ็กต์เล็ก ๆ นี้บน github: https://github.com/gerrytan/wsproblem ขั้นตอนในการผลิตซ้ำ: 1) โคลนและสร้างโครงการ (ตรวจสอบให้แน่ใจว่าคุณใช้ jdk 1.7 และ maven 3.1) $ git clone https://github.com/gerrytan/wsproblem.git $ cd wsproblem $ mvn jetty:run 2) ไปที่http://localhost:8080เข้าสู่ระบบโดยใช้ bob / …

3
วิธีที่ 'ง่าย' ในการนำ Swagger ไปใช้ในแอปพลิเคชัน Spring MVC
ฉันมี ReSTFul API ที่เขียนด้วย Spring อย่างง่าย (ไม่มี Spring Boot ไม่มีของแฟนซี!) ฉันจำเป็นต้องใช้ Swagger ในสิ่งนี้ จนถึงตอนนี้ทุกหน้าบนอินเทอร์เน็ตทำให้ฉันคลั่งไคล้ด้วยการกำหนดค่าที่สับสนและรหัสที่บวมซึ่งฉันไม่พบแบบพกพาเลย ใครมีโครงการตัวอย่าง (หรือชุดขั้นตอนโดยละเอียด) ที่สามารถช่วยฉันทำสิ่งนี้ให้สำเร็จได้บ้าง? โดยเฉพาะอย่างยิ่งฉันกำลังมองหาตัวอย่างที่ดีที่ใช้ swagger-springmvc ฉันรู้ว่ามันมี 'ตัวอย่าง' แต่อย่างดีที่สุดรหัสลับก็ทำให้ท้อใจ ฉันต้องชี้แจงว่าฉันไม่ได้มองหา "ทำไม Swagger ถึงดีที่สุด" ฉันไม่ได้ใช้ (และสำหรับงานปัจจุบันของฉันจะไม่ใช้) Spring Boot หรืออื่น ๆ

6
MockMvc ไม่สามารถจัดการอักขระ UTF-8 อีกต่อไปด้วย Spring Boot 2.2.0 ปล่อย
หลังจากฉันอัพเกรดเป็น2.2.0.RELEASESpring Boot เวอร์ชั่นที่ออกใหม่การทดสอบบางอย่างของฉันล้มเหลว ปรากฏว่าMediaType.APPLICATION_JSON_UTF8ได้รับการคัดค้านและจะไม่ส่งคืนเป็นประเภทเนื้อหาเริ่มต้นจากวิธีการควบคุมที่ไม่ได้ระบุประเภทเนื้อหาอย่างชัดเจน ทดสอบรหัสเช่น String content = mockMvc.perform(get("/some-api") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andReturn() .getResponse() .getContentAsString(); ทันใดนั้นไม่ทำงานอีกต่อไปเนื่องจากประเภทเนื้อหาไม่ตรงกันดังที่แสดงด้านล่าง java.lang.AssertionError: Content type Expected :application/json;charset=UTF-8 Actual :application/json การเปลี่ยนรหัสเพื่อ.andExpect(content().contentType(MediaType.APPLICATION_JSON))แก้ไขปัญหาในตอนนี้ แต่ตอนนี้เมื่อเปรียบเทียบcontentกับวัตถุที่เป็นอนุกรมที่คาดไว้ยังคงไม่ตรงกันหากมีอักขระพิเศษใด ๆ ในวัตถุ ปรากฏว่า.getContentAsString()วิธีการดังกล่าวไม่ได้ใช้ประโยชน์จากการเข้ารหัสอักขระ UTF-8 ตามค่าเริ่มต้น (เพิ่มเติม) java.lang.AssertionError: Response content expected:<[{"description":"Er hörte leise Schritte hinter sich."}]> but was:<[{"description":"Er hörte leise Schritte hinter sich."}]> Expected :[{"description":"Er hörte …

3
วิธีเปิดใช้งานการเข้าสู่ระบบใน org.slf4j สำหรับรุ่น: '2.0.0-alpha1' ใน Spring boot
ฉันใช้การบันทึก SLF4J เพื่อพิมพ์บันทึกทั้งหมด ฉันใช้ org.slf4j เวอร์ชันล่าสุด การใช้งาน 'org.slf4j: slf4j-api: 2.0.0-alpha1' การใช้งาน 'org.slf4j: log4j-over-slf4j: 2.0.0-alpha1' แต่ฉันได้รับข้อผิดพลาดต่อไปนี้และไม่มีการพิมพ์บันทึก SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details. SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions prior to 1.8. SLF4J: Ignoring binding found …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.