Spring MVC springMVC-servlet.xml
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 必须使用包装类类型的参数:
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乱码:
<!-- 解决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的更多相关文章
- cpj-swagger分别整合struts2、spring mvc、servlet
cpj-swagger 原文地址:https://github.com/3cpj/swagger 1. Swagger是什么? 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可 ...
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...
- Spring MVC 配置文件dispatcher-servlet.xml 文件详解
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Spring MVC 配置文件dispatcher-servlet.xml 文件详解(转自 学无止境-yj)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- spring mvc简单介绍xml版
spring mvc介绍:其实spring mvc就是基于servlet实现的,只不过他讲请求处理的流程分配的更细致而已. spring mvc核心理念的4个组件: 1.DispatcherServl ...
- Spring MVC的配置文件(XML)的几个经典案列
1.既然是配置文件版的,那配置文件自然是必不可少,且应该会很复杂,那我们就以一个一个的来慢慢分析这些个经典案列吧! 01.实现Controller /* * 控制器 */ public class M ...
- Spring MVC的web.xml配置详解(转)
出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...
- Spring mvc的web.xml配置详解
1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(l ...
- spring mvc框架web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- Spring MVC学习-----------springMVC-mvc.xml
springMVC-mvc.xml 配置文件片段解说 (未使用默认配置文件名称) <?xml version="1.0" encoding="UTF-8" ...
随机推荐
- php 跳出循环的几种方式
PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式: <?php$i = 1;whil ...
- 想ACCESS数据库插入新的用户
public string AddUserN = ""; //定义用户名字符串 public string paswrd1 = ""; //密码1 public ...
- Python学习(007)-函数的特性
一..函数是什么 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 1.代码重用 2.保持一致性 3.可扩展性 二.创建 2.1格式 de ...
- SWIFT中隐藏TableView多余的分隔线
在用TableView是如果数据不能填充满整个屏幕时,数据行下面会有空行及分隔线,这样不是很美观,如下 如何把多余的部分删除掉呢,其它很简单,把TableView的Footer替换为一个空的UIVie ...
- Android实现EditText的富文本编辑
前言 本文是我之前写的这篇文章<Android图文混排-实现EditText图文混合插入上传>的升级版,除了在EditText实现了图片上传之外,还包含了视频上传.云盘文件上传.录音上传以 ...
- Javascript鼠标事件大全
事件 浏览器支持 描述 onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick IE4|N4|O 鼠标双击事件 onMouseDown IE4|N ...
- bisect
# 二分查找算法 import bisect farm = sorted(['haystack', 'needle', 'cow', 'pig']) # ['cow', 'haystack', 'ne ...
- git中的标签
/*游戏或者运动才能让我短暂的忘记心痛,现如今感觉学习比游戏和运动还重要——曾少锋*/ 1.创建标签: 对于标签来说大家都很熟悉,简单说就是将一个很长的门牌号用另外一个名字来取代,并且好记. 其实利 ...
- HDU 2094:产生冠军(拓扑排序)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 在 Laravel 5 中使用 Repository 模式实现业务逻辑和数据访问的分离
1.概述 首先需要声明的是设计模式和使用的框架以及语言是无关的,关键是要理解设计模式背后的原则,这样才能不管你用的是什么技术,都能够在实践中实现相应的设计模式. 按照最初提出者的介绍,Reposito ...