Spring MVC概述
Spring MVC框架是一個開源的Java平台,為開發強大的基於Java的Web應用程序提供全面的基礎架構支持非常容易和非常快速。
Spring web MVC框架提供了MVC(模型 - 視圖 - 控制器)架構和用於開發靈活和松散耦合的Web應用程序的組件。
MVC模式導致應用程序的不同方面(輸入邏輯,業務邏輯和UI邏輯)分離,同時提供這些元素之間的松散耦合。
-
模型(Model)封裝了應用程序數據,通常它們將由POJO類組成。
-
視圖(View)負責渲染模型數據,一般來說它生成客戶端瀏覽器可以解釋HTML輸出。
-
控制器(Controller)負責處理用戶請求並構建適當的模型,並將其傳遞給視圖進行渲染。
項目目錄結構
主要代碼說明
1、添加控制器
控制器處理GET和POST請求。
@Controller表明這個類是一個控制器在處理具有模式映射的@RequestMapping請求。這里使用 ‘/’, 它被作為默認的控制器。
方法inputCorpus注解為RequestMethod.GET服務默認是GET請求,並呈現包含空白表單的網頁。
方法nliProcess注解為RequestMethod.POST服務處理表單提交POST請求。
@Valid要求spring來驗證相關的對象(CorpusInfo)。
@Controller
@RequestMapping("/")
public class DemoController {
private NLIProcess nli = new NLIProcess();
@RequestMapping(method = RequestMethod.GET)
public String inputCorpus(ModelMap model) {
CorpusInfo cinfo = new CorpusInfo();
model.addAttribute("cinfo", cinfo);
return "enroll";
}
@RequestMapping(method=RequestMethod.POST)
public String nliProcess(@Valid @ModelAttribute("cinfo") CorpusInfo cinfo,
BindingResult result, ModelMap model) {
if (result.hasErrors()) {
return "enroll";
}
model.addAttribute("answer", nli.getAnswer(cinfo.getCorpus()));
return "success";
}
}
2、添加配置類
@Configuration指示該類包含注解為@Bean生產Bean管理是由Spring容器的一個或多個 bean 的方法。
@EnableWebMvc 等效於 mvc:annotation-driven 在XML文件中。
@ComponentScan 等效於 context:component-scan base-package=”…” 提供具有到哪里查找管理Spring beans/類。
方法ViewResolver 配置一個 ViewResolver 用來找出真正的視圖。
方法 addResourceHandlers 配置 ResourceHandler 靜態資源。例子中,將css文件放在 Web應用程序的 /static/css 目錄中。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.demo")
public class DemoConfiguration extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
}
}
方法messageSource 配置消息包,以支持[國際化]消息屬性文件。Spring 將搜索應用程序類路徑中一個名為messages.properties文件:
Size.cinfo.corpus=corpus must be between {2} and {1} characters long
項目運行效果
運行應用程序,訪問URL:http://localhost:8080/SpringMVCDemoNLI
SpringMVC+Maven開發項目源碼詳細介紹
注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權