主页 > 开源代码  > 

java2025热点面试题之springmvc

java2025热点面试题之springmvc
1. 请解释Spring MVC的工作原理。

答案: Spring MVC是一个基于Java的MVC框架,用于构建Web应用程序。其工作原理如下:

客户端发送请求到DispatcherServlet,它是Spring MVC的前端控制器。DispatcherServlet查询HandlerMapping,根据请求的URL找到对应的Controller。HandlerAdapter调用Controller中的方法处理请求,并返回ModelAndView对象。ViewResolver根据ModelAndView中的视图名称解析具体的视图模板(如JSP、Thymeleaf)。视图模板将模型数据渲染成最终的HTML页面,并返回给客户端。 2. 如何在Spring MVC中实现一个简单的控制器?

答案: 可以通过注解的方式实现一个简单的控制器。例如:

import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloWorldController { @GetMapping("/hello") @ResponseBody public String hello() { return "Hello, Spring MVC!"; } }

上述代码定义了一个控制器,当访问/hello路径时,返回字符串"Hello, Spring MVC!"。

3. 如何在Spring MVC中实现文件上传?

答案: 实现文件上传需要以下步骤:

添加commons-fileupload依赖(Spring Boot中已包含)。在Spring配置中添加CommonsMultipartResolver:@Bean public CommonsMultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setMaxUploadSize(10 * 1024 * 1024); // 设置最大上传大小为10MB return resolver; } 创建文件上传的Controller:@PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file, Model model) { if (!file.isEmpty()) { try { Path path = Paths.get("uploads/"); Files.copy(file.getInputStream(), path.resolve(file.getOriginalFilename()), StandardCopyOption.REPLACE_EXISTING); model.addAttribute("message", "文件上传成功!"); } catch (IOException e) { model.addAttribute("message", "文件上传失败:" + e.getMessage()); } } else { model.addAttribute("message", "文件为空!"); } return "uploadStatus"; } 创建上传页面(如JSP),并设置表单的enctype为multipart/form-data。 4. 如何在Spring MVC中实现拦截器(Interceptor)?

答案: 可以通过实现HandlerInterceptor接口或继承HandlerInterceptorAdapter类来创建拦截器。例如:

public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("拦截器:请求处理前"); return true; // 返回true继续处理,返回false中断处理 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("拦截器:请求处理后"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("拦截器:请求完成"); } }

然后在Spring配置中注册拦截器:

@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/**") // 拦截所有请求 .excludePathPatterns("/login", "/register"); // 排除登录和注册页面 } } 5. 如何在Spring MVC中实现国际化(i18n)?

答案: 可以通过以下步骤实现国际化:

创建资源文件(如messages.properties、messages_zh_CN.properties)。在Spring配置中启用国际化:@Bean public ResourceBundleMessageSource messageSource() { ResourceBundleMessageSource source = new ResourceBundleMessageSource(); source.setBasename("messages"); return source; } 在Controller中使用@Value注解或MessageSource接口获取国际化消息:@Controller public class LocaleController { @Value("${welcome.message}") private String welcomeMessage; @GetMapping("/welcome") public String welcome(Model model) { model.addAttribute("message", welcomeMessage); return "welcome"; } } 在视图中使用<spring:message>标签或Thymeleaf表达式显示国际化内容。
标签:

java2025热点面试题之springmvc由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“java2025热点面试题之springmvc