搭建SpringMVC
一、新建Module
1.新建Module,类型如下图所示:
2.为项目添加Spring框架支持,操作步骤如下:
首先在Module右键->Add Framework Support:
2.Spring节点,选中Create empty spring-config.xml
3.微调站点代码结构,添加controller和jsp文件存放目录。调整后的代码结构如下:
4.在pom.xml引入springmvc依赖包:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.5.RELEASE</version> </dependency>
二、配置web.xml
Spring MVC自带了一个Dispatcher Servlet,全名是org.springframework.web.servlet.DispatcherServlet。
1.我们在web.xml中配置节点servlet和servlet-mapping:
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2.说明:
- url-pattern为 /表示所有请求都被映射到DispatcherServlet。
- 按照约定,初始化时会自动查找WEB-INF下命名规则为{servletname}-servlet.xml的文件,本例中对应springmvc-servlet.xml。
3.如果想放在其他目录下,需要在servlet中的init-param节点进行设置,param-name必须为contextConfigLocation,param-value为目标路径。比如我们想把spring配置文件放在/WEB-INF/config/springmvc.xml,可以如下配置:
<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/config/springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
在该项目中我们使用第一种方式。
三、controller和view
MVC框架有model、view、controller三部分组成。model一般为一些基本的Java Bean,controller用于处理网站的请求,view用于进行相应的页面显示。
1.controller
在src\main\java中新建一个package名称为com.cathy.controller,然后新建类CategroyController.java。
@Controller public class CategoryController { @RequestMapping(value = "/category/edit") public String Edit() { return "edit"; } @RequestMapping("/category/detail") public String Detail(){ return "detail"; } }
几点说明:
①@Controller注解:采用注解的方式,可以明确地定义该类为处理请求的Controller类;
②@RequestMapping()注解:用于定义一个请求映射,value为请求的url;
③return "edit":处理完该请求后返回的页面,此请求返回 edit.jsp页面。
2.view
在WEB-INF/jsp/目录下新建两个jsp页面:edit.jsp和detail.jsp
3.配置springmvc-servlet.xml
回到mvc-dispatcher-servlet.xml,进行相关配置。首先加入component-scan标签,指明controller所在的包,并扫描其中的注解
<context:component-scan base-package="com.cathy.controller"></context:component-scan> <mvc:annotation-driven></mvc:annotation-driven>
然后配置ViewResolver
<!--View Resolver--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
3.遇到问题:
①运行报错:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cacheManager' available
②解决方法:
修改springmvc-servlet.xml
xmlns:mvc="http://www.springframework.org/schema/cache
改为
xmlns:mvc="http://www.springframework.org/schema/mvc
xsi也相应修改
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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"
③完整的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" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--controller包--> <context:component-scan base-package="com.cathy.controller"></context:component-scan> <!--开启注解--> <!--<mvc:annotation-driven></mvc:annotation-driven>--> <!--View Resolver--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
四、运行
测试 url
http://localhost:8091/category/detail/
http://localhost:8091/category/edit/