DispatcherServlet的配置:

  DispatcherServlet是SpringMVC的前端控制器,所有的请求都经过前端控制器,也是项目中出现的唯一一个servlet,在 web.xml中进行配置:

    <servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- springmvc配置文件默认的名字:<servlet-name>-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

1 @Controller:

  用于标记在一个类上,标记的类就是一个SpringMVC Controller对象

  dispatcherServlet会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解

  @Controller只是定义了一个控制器类,使用了@RequestMapping注解的方法才是真正处理请求的处理器

    <!-- 扫描controller -->
    <context:component-scan base-package="com.roxy.springmvc.controller"></context:component-scan>

2 @ RequestMapping()

  用于处理请求地址映射,可用于类或者方法上

  用于类上:说明类中所有响应请求的方法都是以该地址作为父路径

  返回值会通过视图解析器解析为实际的物理视图(通过perfix+returnValue+suffix的方式得到),然后做转发操作

     <!-- 视图解析器,定义了前缀和后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
pro:

  value:指定请求的实际地址
    value是默认的通知,可以省略;如果有其他的参数,则不可省略
  method:指定请求的method类型[GET、POST、PUT、DELETE等]
    POST形式:@RequestMapping(value="/world", method=RequestMethod.POST)
     GET形式:@RequestMapping(value="/world", method=RequestMethod.GET)
      如果不指定method,则接受任何形式的请求
       405:请求方式错误
  consumes:指定处理请求的提交内容类型[application/json、text/html等]
  produces:指定返回的内容类型,仅当request请求头中的Accept类型中包含该指定类型才返回
  params:指定request中必须包含某些参数值
  headers:指定request中必须包含某些指定的header值
@Controller
@RequestMapping("/hello")
public class HelloWorld { //请求映射:
// 将url参数映射到方法,DispatcherServlet 根据这个配置中的uri地址决定调用哪个方法
// 方法的返回值类型如果是字符串(String)
@RequestMapping(value="/world", method=RequestMethod.GET)
public String helloWorld(){ //返回的是视图的名字
System.out.println("hello world"); //说明返回的是一个视图名字,DispatcherServlet 会根据视图解析器中的配置找到视图的完整的路径,从而解析并显示视图
return "helloworld";
}
ant风格:
 
  可以接收通配符
  @RequestMapping(""):
    通配符:
      ?:匹配文件名的一个字符
      *:匹配文件名的所有字符
      **:匹配多层路径
    @RequestMapping("/testantpath/*/draco")

    public String testAntpath() {

        System.out.println("antpath");

        return "success";
}

3 @CookieValue()

  用于处理cookies,显示必须有值

    @RequestMapping("/testcookie")
public String testCookie(@CookieValue("JSESSIONID") String sessionID){ System.out.println(sessionID); return "success";
}

4 @RequestHeader():

  获取请求头中某一部分的值

    @RequestMapping("/testheader")
public String testHeader(@RequestHeader(value="Accept-Language") String header) {
System.out.println(header);
return "success";
}

5 请求参数和请求头表达式:

params和 headers支持简单的表达式:
  param1: 表示请求必须包含名为 param1 的请求参数
  !param1: 表示请求不能包含名为 param1 的请求参数
  param1 != value1: 表示请求包含名为 param1 的请求参数,但其值 不能为 value1
  {“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1
    @RequestMapping(value="/testparam", params= {"username", "age!=10"}, headers= {"Accept-Language=zh-CN,zh;q=0.8"})
public String testParam(String username, Integer age) { System.out.println(username + " " + age); return "success";
}

6 处理器请求参数:

  6.1 自动的表单参数匹配(post/get):

    表单中控件name的值,和controller层方法的参数名一致,则匹配,可自动接收

    <form action="login" method="post">
<label for="username">用户名<input type="text" id="username" name="username"/></label>
<label for="password">密码<input type="password" id="password" name="password"/></label>
<button>登录</button>
</form>
    @RequestMapping(value="/login", method=RequestMethod.POST)
public String login(String username, String password){ System.out.println(username);
System.out.println(password); return "redirect:world";
}

  6.2 注解形式的参数匹配:

    表单中控件的name的值和controller方法中参数名不一致时,使用@RequestParam()注解

<label>用户名<input type="text" id="username" name="realname" /></label>
    @RequestMapping(value="/login", method=RequestMethod.POST)
public String login(@RequestParam(value="realname") String username, String password) { }

  6.3 url中get形式的参数匹配:

    url中参数name的值,和controller层方法的参数名一致,则匹配,可自动接收

  6.4 可以用 defaultValue 属性设置上参数的默认值:  

    @RequestMapping("/list")
public String list(
@RequestParam(value="currentpage", defaultValue="1") Integer currentpage,
@RequestParam(value="pagesize", defaultValue="10") Integer pagesize)

  6.5 必须使用包装类类型的参数:

    因为当参数不存在时,springmvc会将参数的值转换成null,若使用基本类型会出现转换异常

  6.6 可以使用required设置参数是否可选:   

    @RequestMapping("/list")
public String list(
@RequestParam(value="currentpage", required=false)Integer currentpage,
@RequestParam(value="pagesize", required=false)Integer pagesize)

7 路径参数

  使用 @PathVariable 将url地址中的路径部分做参数传递

    @RequestMapping("/get/{id}")
public String get(@PathVariable(value="id") Integer id) {
System.out.println("id:" + id);
return "user/edit";
}

8 请求转发和重定向:

请求转发: 
  
  return "视图名称";
重定向:
  
  return "redirect:controller的mapping地址"

9 解决post乱码:

  在web.xml文件中配置字符编码过滤器,由spring提供
   <!-- 解决SpringMVC的post乱码 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

Spring MVC springMVC-servlet.xml的更多相关文章

  1. cpj-swagger分别整合struts2、spring mvc、servlet

    cpj-swagger 原文地址:https://github.com/3cpj/swagger 1. Swagger是什么? 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可 ...

  2. 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener

    [Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...

  3. Spring MVC 配置文件dispatcher-servlet.xml 文件详解

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. Spring MVC 配置文件dispatcher-servlet.xml 文件详解(转自 学无止境-yj)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  5. spring mvc简单介绍xml版

    spring mvc介绍:其实spring mvc就是基于servlet实现的,只不过他讲请求处理的流程分配的更细致而已. spring mvc核心理念的4个组件: 1.DispatcherServl ...

  6. Spring MVC的配置文件(XML)的几个经典案列

    1.既然是配置文件版的,那配置文件自然是必不可少,且应该会很复杂,那我们就以一个一个的来慢慢分析这些个经典案列吧! 01.实现Controller /* * 控制器 */ public class M ...

  7. Spring MVC的web.xml配置详解(转)

    出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...

  8. Spring mvc的web.xml配置详解

    1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(l ...

  9. spring mvc框架web.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  10. Spring MVC学习-----------springMVC-mvc.xml

    springMVC-mvc.xml 配置文件片段解说 (未使用默认配置文件名称) <?xml version="1.0" encoding="UTF-8" ...

随机推荐

  1. Gerrit 使用规范

    代码提交要求 一个Commit对应一个修改点(除非是在项目初始阶段或是升级BSP时). 不要随便修改文件的属性.Windows 修改过的文件属性会变成755,上传代码时请注意修改成文件的原属性,可以用 ...

  2. Ubuntu:搜狗输入法不能输入中文

    搜狗输入法不能输入中文 问题描述 可以打开搜狗输入法,可以打英文,但是不能切换成中文. 其他输入法正常使用(这个可以判断是不是fcitx是不是出现错误). 有一个关于sogou的内部错误提示 解决方法 ...

  3. 动态改变UITabBarController的菜单文字

    有时候项目可能涉及到使用多种语言,如简体.繁体.为了适应这种情况我用到了Localizable.strings,然后在不同的语言版本文件内定义相应的内容(这就不说了,可以参考:http://www.c ...

  4. ADC内设与外设的区别

    ADCCLK最大等于14,采样周期为1.5. ADC分两个通道组:规则通道组和注入通道组.规矩通道组就相当于正常运行,而注入通道就相当于中断. ADC为模数转换,而DAC则为数模转换.在芯片引脚中,所 ...

  5. 20155117王震宇 2016-2017-2 《Java程序设计》第七周学习总结

    教材学习内容总结 时间度量 格林尼治标准时间(GMT):现在GMT已不作为标准时间使用. 世界时(UT):借助观测远方星体跨过子午线而得,受地球自转速度影响. 国际原子时(TAI):铯原子辐射振动幅度 ...

  6. 10款PHP开源网店系统

    在当今经济危机的大环境下,网上购物越来越来吃香,网上开店成本低,快捷方便,出名的电子商务网站有淘宝,拍拍,Ebay或是最新的百度有啊,这些网站都提供开店的机会,如果是想自己搭建购物平台,可以从下面选择 ...

  7. CTF-练习平台-Social之 密码?

    一.密码? 看到题目提示是“张三”“生日”,再联系到我们设置密码时一般是名字的拼音首字母加生日,所以猜测是:zs19970315尝试后正确.

  8. 第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】

    MySQL数据库,[显示.创建.选定.删除数据库],[用户管理.对用户增删改查以及授权] 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户 ...

  9. echar生成雷达图

    function createRadarChart(indicatorData, personData) { var myChart = echarts.init(document.getElemen ...

  10. stenciljs 学习十一 pwa 支持

    stenciljs 对于pwa 的支持是自动注入的,我们只需要简单的配置,stenciljs使用workbox 配置 默认配置 { skipWaiting: true, clientsClaim: t ...