一.手动配置方式

1.web.xml中DispatcherServlet控制器的的配置

SpringMVC也是一种基于请求驱动的WEB框架,并且使用了前端控制器的设计模式。前端控制器就是DispatcherServlet控制器,只要满足web.xml文件中的【url-pattern】的规则,这个请求就会交给这个前端控制器(DispatcherServlet),然而前端控制器在收到请求后自己不进行任何处理,根据相应的【URL的映射规则】委托给其他的页面控制器进行处理请求。前端控制器只作为一个统一的访问点,进行全局的流程控制。

  contextConfigLocation的值指定springmvc的配置文件位置

Servlet拦截匹配规则可以自已定义,拦截哪种URL合适? 
当映射为@RequestMapping("/user/add")时,为例

1、拦截*.do、*.htm, 例如:/user/add.do

  这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。

2、拦截/,例如:/user/add

  可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。

  弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。想实现REST风格,事情就是麻烦一些。后面有解决办法还算简单。

3、拦截/*,这是一个错误的方式,请求可以走到Action中,但转到jsp时再次被拦截,不能访问到jsp。

<!-- springMVC前端控制器 -->
<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- contextConfigLocation配置springmvc加载的配置文件;如果不配置默认加载的是/WEB-INF/servlet名称-servlet.xml -->
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
</servlet> <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <!-- 第一种:*.action 以.action结尾的由DispatcherServlet解析 -->
  <!-- <url-pattern>*.action</url-pattern> -->
  <!-- 第二种:/ 所有的访问地址都由DispatcherServlet解析,对于静态文件的解析需要配置不让DispatcherServlet解析;使用此种方式可以实现RESTful风格的url-->
  <url-pattern>/</url-pattern>
</servlet-mapping>

手动指定spring配置文件的位置,需要使用ServletContext的初始化参数

<!-- 手动指定spring配置文件的位置,需要使用ServletContext的初始化参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/application-dao.xml,classpath:spring/application-service.xml,classpath:spring/application-transaction.xml</param-value>
</context-param>

  

  配置spring提供的监听器,用于监听servletContext对象的创建,同时为我们创建spring容器放在servletContext中

  <listener>
<!-- 配置spring提供的监听器,用于监听servletContext对象的创建,同时为我们创建spring容器放在servletContext中,需导spring-web-4.3.8.RELEASE.jar
默认情况下:这个配置只能加载位置是在WEB-INF目录中的spring配置文件,同时文件名必须是applicationContext.xml(所以spring配置文件在其它位置时需要手动指定配置文件位置)
-->
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

  

  

  2.在springmvc.xml中配置1.处理器映射器  2.处理器适配器  3.视图解析器(注意默认使用了jstl,所以必须导入jstl包)

               上述视图解析器配置了前缀和后缀两个属性,因此控制器类的视图路径仅需提供文件名,视图解析器将会自动添加前缀和后缀。
         例如:1.视图解析器中设置了这两个属性时
             <property name="prefix" value="/WEB-INF/jsp/"></property>
      <property name="suffix" value=".jsp"></property>
          2.Controller类中返回的ModelAndView设置了放回视图名:modelAndView.setViewName("items");
          3.则访问controller成功后访问的url为...../WEB-INF/jsp/items.jsp
       <!--  配置处理器映射器    在配置Controller时需要指定bean的name;bean的name作为url进行查找 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 配置处理器适配器 ;所有的处理器适配器都实现了HandlerAdapter接口 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 视图解析器 ;解析jsp,默认使用jstl标签,所以必须导jstl包 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 设置view的前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 设置view的后缀 -->
<property name="suffix" value=".jsp"></property> <!-- 指定前后缀后modelAndView.setViewName("");自动在前后加上前后缀 -->
</bean>

  3.编写controller的java代码

    手动配置controller时对应的java类需实现Controller接口,并重写实现方法

public class ItemController implements Controller{

    @Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
String name = "普通name";
//返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
//相当于request的setAttribute();
modelAndView.addObject("name",name); //指定视图
modelAndView.setViewName("items");
return modelAndView;
} }

  4.在springmvc.xml中配置controller

   <!-- 配置Controlle -->
<bean name="/queryItems.action" class="cn.controller.ItemController"></bean>

二.注解方式

  1.web.xml配置与以上手动配置controller的web.xml一样

  2.springmvc.xml中配置注解映射器和注解适配器

    方式一:

        <!-- (注解)映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!-- (注解)适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>

    方式二:

    <!-- 使用<mvc:annotation-driven>可以代替上边注解映射器和注解适配器 ,它默认加载很多参数绑定方法
比如json转换解析器就默认加载了,实际开发用这个-->
<mvc:annotation-driven></mvc:annotation-driven>

  

  3.编写通过注解实现的controller的java代码

//使用@Controller说明此类是一个控制器
@Controller
//为了对url进行分类管理,可以在这里定义根路径,比如此例子访问url为/item/queryItems
@RequestMapping("/item")
public class AnnotationController { @Autowired
private ItemService itemService; /**
* 查询item
* @param itemQueryVo
* @return
*/
//@RequestMapping实现方法和url的映射,一个方法对应一个url,一般值设置和方法名一样
@RequestMapping("/queryItems")
public ModelAndView queryItems(ItemQueryVo itemQueryVo) {
ModelAndView modelAndView = new ModelAndView();
List<ItemCustom> itemsList = itemService.findItemsList(itemQueryVo);
//相当于request的setAttribute();
modelAndView.addObject("itemsList",itemsList);
//指定视图
modelAndView.setViewName("item/itemsList");
return modelAndView;
}

  4.springmvc.xml中配置注解的controller

        <!-- 扫描单个 -->
<!-- <bean class="cn.controller.AnnotationController"></bean> -->
<!-- 扫描包下的 -->
<context:component-scan base-package="cn.controller"></context:component-scan>

1.springMVC Controller配置方式的更多相关文章

  1. springMVC controller配置方式总结

    第一种:不配置controller 的bean.(注解的方式) 在dispatch-servlet.xml中,在beans节点下配置context:component-scan节点 <!-- 启 ...

  2. Spring MVC Controller配置方式

    第一种 URL对应Bean如果要使用此类配置方式,需要在XML中做如下样式配置 以上配置,访问/hello.do就会寻找ID为/hello.do的Bean,此类方式仅适用小型的应用系统 第二种 为UR ...

  3. SpringMVC Controller配置方法有哪几种

    第一种 URL对应Bean 如果要使用此类配置方式,需要在XML中做如下样式配置 <!-- 表示将请求的URL和Bean名字映射--> <bean class="org.s ...

  4. SpringMVC初写(一)SpringMVC的配置方式

    1.Spring概述a)SpringMVC是什么?SpringMVC是Spring框架内置的MVC实现.SpringMVC就是一个Spring内置的MVC子框架MVC:Model-View-Contr ...

  5. SpringMVC:Controller配置总结

    西部开源-秦疆老师:SpringMVC系列博客 , 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringMVC:Controlle ...

  6. springmvc的系统学习之配置方式

    资源:尚学堂  邹波 springmvc框架视频  一.springMVC 工作流程        页面请求---->控制器(Controller DispatcherServlet)----& ...

  7. SpringMVC的注解方式配置

    SpringMVC支持使用注解方式配置,比配置文件方式更加灵活易用,是SpringMVC使用的主流模式. 1.在配置文件中开启SpringMVC的注解 <!-- 开启包扫描 --> < ...

  8. SpringMVC(一)-- springmvc的系统学习之配置方式

    资源:尚学堂  邹波 springmvc框架视频  一.springMVC 工作流程        页面请求---->控制器(Controller DispatcherServlet)----& ...

  9. SpringMVC基于代码的配置方式(零配置,无web.xml)直接继承WebMvcConfigurerAdapter

    基于配置文件的web项目维护起来可能会更方便,但是有时候我们会有一些特殊的需求,比如防止客户胡乱更改配置,这时候我们需要给配置隐藏到代码中. 1.创建一个动态web项目(无需web.xml) 2.右键 ...

随机推荐

  1. jQuery-跨域问题的处理

    调用登录接口时,后端一般会在调用登录接口成功后,在response中设置cookie,之后前端的每次请求都会自动地在请求头上加上后端设置好的cookie,这对前端来说是透明的. 当登录接口与登录后调用 ...

  2. redis的embstr编码

    问题来了 今天在看书籍<Redis设计与实现>的时候,在8.2字符串对象里面写到 如果字符串对象保存的是一个字符串值, 并且这个字符串值的长度大于 39 字节, 那么字符串对象将使用一个简 ...

  3. Go初学乍练 - 安装以及开发环境搭建

    本文介绍主要以Windows作为开发系统环境 1.下载SDK 官方下载页:https://golang.org/dl/ 官方下载地址: 地址 类型 https://dl.google.com/go/g ...

  4. Spring Boot 2 快速教程:WebFlux Restful CRUD 实践(三)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第102篇原创 03:WebFlux Web CR ...

  5. 关于C# webapi ,接口返回字符串和json格式 ,返回值中有反斜杠

    最近遇到一个比较郁闷的问题,记录一下 写了一个接口,想返回json 数据,但是返回值中总是带有反斜杠... ,下面来看原因 首先,配置 webapi的路由 App_Start 文件夹下 ,WebApi ...

  6. 移除 DevExpress 的 XtraForm 标题文字阴影

    问题 在使用 DevExpress 开发 WinForm 程序时,我是使用的默认皮肤进行开发.但客户要求标题栏背景色改为蓝色,标题文字颜色改为白色. 改颜色比较简单,参考了 DevExpress Su ...

  7. vue-cli引用vant使用rem自适应

    摘要 由于需要用到弹出层但是懒得造轮子所以使用vant 介绍 使用的node包管理器为yarn vue-cli版本4 rem计算方式为index.html的js脚本计算 安装vant yarn add ...

  8. go语言设计模式之Concurrency future

    future.go package future type SuccessFunc func(string) type FailFunc func(error) type ExecuteStringF ...

  9. sqlite3 国产化如何添加密码

    sqlite3 国产化如何添加密码 sqlite3 国产化如何添加密码sqlite3 国产化如何添加密码

  10. 匿名内部类和局部内部类只能访问final变量的原因

    以下是从各大网站找来的解释,我在这里摘抄一些从其他地方搬过来的大致思想,可能会比较乱, 详细解释 http://blog.csdn.net/salahg/article/details/7529091 ...