Spring MVC - 1 项目创建和配置

时间:2022-11-20 22:00:25
Spring MVC - 1 项目创建和配置
核心组件
 
1,DispatcherServlet:*控制器,把请求转发到具体的Controller.
2,handlerMapping:映射处理器,负责映射到*处理器转发给Controller时的映射策略。
3,Controller:具体处理请求的控制器
4,ModelAndView:服务层返回的数据和视图层的封装类。
5,ViewResolver:视图解析器,解析具体的视图。
6,Interceptors:拦截器,负责拦截我们定义的请求
 
SpringMVC组件流程
Spring MVC - 1 项目创建和配置
 
配置一个Springmvc的过程:
1,新建一个web    project
2,SpringMVC所需要的包复制到WEB-INF/lib
3,配置web.xml如下,配置DispatcherServlet
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xmlns=" http://java.sun.com/xml/ns/javaee" xmlns:web=" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<!--以上是标准头配置-->

<!-- *控制器 -->
<servlet>
<!--给servlet取个名字,并且引入它所需要的类-->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- struts习惯使用/*,在springmvc不管用 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>

</web-app>
 
4,
建立一个Controller,建立一个类,这个类需要继承 AbstractController,如下:
package cn.itcast.springmvc;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
 
public class TestController extends AbstractController {
 
 @Override
 protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
   HttpServletResponse arg1) throws Exception {
  System.out.println("hello springmvc");
  //viewName不是jsp的名称而是前缀与后缀之间的路径字符串
  return new ModelAndView("jsp1/index");
 }
 
 
}
 
5,在WEBROOT\WEB-INF下配置controller
 
默认名称是,*控制器名-servlet.xml
在这里是springmvc-controller.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:mvc=" http://www.springframework.org/schema/mvc"
xmlns:context=" http://www.springframework.org/schema/context"
xmlns:aop=" http://www.springframework.org/schema/aop"
xmlns:tx=" http://www.springframework.org/schema/tx"
xsi:schemaLocation=" http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
 
<--以外是默认头配置,以内是手动配置-->       
<!-- 需要配置controller,handlerMapping,ViewResolver, interceptor -->

<!-- 映射处理器之间是独立的,不相互影响,4个例子 -->

<!--1 默认的映射处理器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!-- 2简单url的映射处理器 ,访问key的时候就可以访问这个类-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello1.do">testController</prop>
</props>
</property>
</bean>

<!--4 控制器的类名映射处理器 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>


<!-- 3使用默认的映射处理器来映射controller,吧id唯一映射到了TestController中,并且 访问name.do的时候也可以映射-->
<bean id="testController" name="/hello.do" class="cn.itcast.springmvc.TestController"></bean>

<!-- 前缀+ viewName +后缀 ,配置modeandview视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- webroot到某一指定的文件夹的路径 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 视图名称的后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
 
6,把.jsp文件放入指定位置,运行服务器,就可以访问了。
 
 
总结一下主要添加web访问页面流程:
1,建立一个Controller类文件-->配置访问Controller的url的映射处理器
<!-- 使用默认的映射处理器来映射controller,把hello.do映射到hello.do上,访问的时候访问hello.do就会运行TestController -->
 
 
 
注解方式:
1,前后缀不变
2,建立控制类,加上Controller注解,访问控制层方法的注解。
 
package cn.itcast.springmvc;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller //用来标注当前类是springmvc的控制层类
@RequestMapping("/test")//给类添加了控制注解,给该Controller添加了命名空间
public class TestController
{
@RequestMapping("/hello.do")//用来访问控制层方法的注释
public String hello()
{
 return "jsp1/index";
}
 
}
 
 
 
3,在配置文件中配置注解驱动,扫描器所扫描的文件夹
 
  <!-- 扫描器的位置,同时也驱动了扫描器 -->
  <context:component-scan base-package="cn.itcast.springmvc"></context:component-scan>