IDEA搭建我的第一個Spring MVC應用(附使用註解實現)
阿新 • • 發佈:2019-02-12
oss finish b- ces ram 們的 配置 version 1.0
新建項目
File——New——Project
Next
這裏任意填寫。
Finish
配置項目
配置前端控制器 DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--定義Spring MVC前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!--讓Spring MVC的前端控制器攔截所有請求--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
配置Spring MVC的Controller
在WEB-INF下新建springmvc-config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="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.xsd"> <!--配置Handle,映射"/hello"請求--> <bean name="/hello" class="com.wen.controller.HelloController"/> <!--處理映射器將bean的name作為url進行查找,需要在配置Handle是指定name(即url)--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!--SimpleControllerHandlerAdapter是一個處理器適配器,所有處理適配器都有實現HandlerAdapter--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!--視圖解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> <!--在Spring4.0後,可以不配置處理映射器、處理器適配器和視圖解析器,也可以完成Spring內部MVC工作--> </beans>
新建HelloController.java
package com.wen.controller; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; /** * 實現Controller接口的控制器,用來處理hello請求 * 可以處理一個單一的請求動作 */ public class HelloController implements Controller { private static final Log logger = LogFactory.getLog(HelloController.class); /** * handleRequest是Controller接口必須實現的方法 */ @Override public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { logger.info("handleRequest被調用"); //創建預返回的ModelView對象 ModelAndView mv =new ModelAndView(); //添加模型數據 mv.addObject("message","HelloWorld"); //邏輯視圖名 mv.setViewName("/WEB-INF/pages/welcome.jsp"); //返回對象、模型數據、視圖名 return mv; } }
新建welcome.jsp,使用EL表達式用來接受Controller傳遞的message
<%--
Created by IntelliJ IDEA.
User: wen
Date: 2019/1/27
Time: 22:08
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Welcome</title>
</head>
<body>
${requestScope.message}
</body>
</html>
測試應用
Tips:使用MVC框架應該嚴格遵守MVC思想。MVC框架不贊成瀏覽器直接訪問Web應用的視圖頁面,用戶的所有請求都只應向控制器發送,由控制器調用模型組件、視圖組件向用戶呈現數據,即指向視圖層。
基於註解的控制器
使用註解大大的提供了我們的開發效率,但是了解一點原始的配置,才能更好的了解他們的運行流程。
我們只需要修改兩個地方~
1、Controller
我們不用需要Controller接口,改成使用註解來描述。用來處理/hello請求。
package com.wen.controller;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* 基於註解的控制器
* 可以同時處理多個請求動作,並且無需實現任何接口
* org.springframework.stereotype.Controller 註解用於指示該類是一個控制器
*/
@Controller
public class HelloController {
private static final Log logger= LogFactory.getLog(HelloController.class);
@RequestMapping(value = "/hello")
public ModelAndView hello(){
logger.info("hello方法被調用");
ModelAndView mv =new ModelAndView();
mv.addObject("message","Hello World");
mv.setViewName("/WEB-INF/pages/welcome.jsp");
return mv;
}
}
2、修改Spring MVC的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--spring可以自動去掃描base-pack下面的包或者子包下面的java文件-->
<context:component-scan base-package="com.wen.controller"/>
<!--配置annotation類型的處理映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--配置annotation類型的處理器適配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!--視圖解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
<!--在Spring4.0後,可以不配置處理映射器、處理器適配器和視圖解析器,也可以完成Spring內部MVC工作-->
</beans>
測試應用
End~
IDEA搭建我的第一個Spring MVC應用(附使用註解實現)