SpringMVC
一.入门
1.案例
1.启动服务器,加载配置文件
在web.xml中配置前端控制器,DispatcherServlet对象创建
<!--前端控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
配置全局化参数,使服务器启动时扫描springmvc.xml文件
<init-param>
<param-name>contextConfigLocation</param-name> //固定名称
<param-value>classpath:springmvc.xml</param-value> //要扫描的文件
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
/**
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
3)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet
4)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
5)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
6)当值相同时,容器就会自己选择顺序来加载。
配置请求经过路径
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern> // 斜杠表示根目录,过滤所有请求
</servlet-mapping>
springmvc.xml创建
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启注解扫描-->
<context:component-scan base-package="com.hmk"></context:component-scan>
<!--视图解析器对象-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--开启springMVC框架注解支持
相当于配置了 处理器映射器 和 处理器适配器-->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
2.编写index.jsp和success.jsp
index.jsp
<body>
<h3>入门程序</h3>
<a href="hello">入门程序</a>
</body>
success.jsp
<body>
<h3>入门成功</h3>
</body>
3.编写hellocontroller类
@Controller //对象创建管理交给spring
public class HelloController {
@RequestMapping(path = "/hello") //处理映射路径
public String sayHello(){
System.out.println("hello stringmvc");
return "success";
}
}
***创建工程时添加的键值对
archetypeCatalog
internal
2.案例执行细节流程图
3.@RequestMappring
- RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系
- RequestMapping注解可以作用在方法和类上
作用在类上:第一级的访问目录
作用在方法上:第二级的访问目录
细节:路径可以不编写 / 表示应用的根目录开始
细节:${ pageContext.request.contextPath }也可以省略不写,但是路径上不能写 / - RequestMapping的属性
path 指定请求路径的url
value value属性和path属性是一样的
mthod 指定该方法的请求方式
params 指定限制请求参数的条件
headers 发送的请求中必须包含的请求头
二.请求参数绑定
1.请求参数绑定
1.基本类型与bean类型
param.jsp
<form action="param/saveAccount" method="post">
姓名:<input type="text" name="username"><br/>
密码:<input type="text" name="password"><br/>
金额:<input type="text" name="money"><br/>
用户姓名:<input type="text" name="user.uname"><br/>
年龄:<input type="text" name="user.age"><br/>
<input type="submit" value="提交">
</form>
paramController.java
@RequestMapping("/testParam")
public String testParam(String username,String password){
System.out.println("执行了...");
System.out.println("用户名:"+username+"密码:"+password);
return "success";
}
@RequestMapping("/saveAccount")
public String saveAccount(Account account){
System.out.println("执行了...");
System.out.println(account);
return "success";
}
2.集合类型
用户姓名:<input type="text" name="list[0].uname"><br/>
年龄:<input type="text" name="list[0].age"><br/>
用户姓名:<input type="text" name="map['one'].uname"><br/>
年龄:<input type="text" name="map['one'].age"><br/>
2.中文乱码过滤器
<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>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.获取原生API
@RequestMapping("/testServlet")
public String testServlet(HttpServletRequest request, HttpServletResponse response){
System.out.println("执行了...");
System.out.println(request);
HttpSession session=request.getSession();
System.out.println(session);
ServletContext servletContext=session.getServletContext();
System.out.println(servletContext);
System.out.println(response);
return "success";
}
4.常用注解
@RequestParam
@RequestBody
@PathVariable
@HiddentHttpMethodFilter
@RequestHeader
@CookieValue
@ModelAttribute
@SessionAttribute
三.响应数据和结果视图
1.返回值分类
1.字符串