1. 所需储备知识点:
Servlet、jsp、spring框架
2. springMVC主要功能:
在获取多个参数、文件上传、servelt功能单一方面都能有很好的解决办法
SpringMVC工作原理图:
二、springMVC框架的搭建
第一步:导入springMVC的jar包
下面是项目的目录:
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>dt48_springMVC1</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 配置springMVC的核心控制器类:DispatcherServlet -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 因为DispatcherServlet是springmvc的一个核心类,而springmvc.xml是springmvc的一个配置文件,所以将这两者关联起来
<init-param>是 初始化参数,<param-name>是名称,<param-value>是值
在启动DispatcherServlet的时候就会读取springmvc.xml这个配置文件
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!-- 表示DispatcherServlet拦截这个项目下的所有资源请求 ,注意这种配置在调用jsp页面的时候很可能会出现404错误,因为dispatcher会拦截所有资源,如果写成*.htm,则表示只是拦截这种形式的请求,具体的拦截在具体项目中进行了解-->
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
springmvc.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
<!-- 配置包扫描 -->
<context:component-scan base-package="cn.java.controller"></context:component-scan>
<!-- 加入springMVC特有的注解驱动 -->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
User:
package cn.java.entity;
/**
* Description: <br/>
* Date: 上午11:17:34 <br/>
*
* @author dingP
* @version
* @see
*/
public class User {
private String username;
private String password;
private Integer age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", age=" + age + "]";
}
}
package cn.java.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import cn.java.entity.User;
/**
* Description: <br/>
* Date: 上午11:07:50 <br/>
*
* @author dingP
* @version
* @see
*/
//注意,FrontServlet是一个很普通的类,但是在springmvc中加上@Controller之后,这个类就变成了一个servlet
@Controller
public class FrontController {
// 为当前方法配置一个对外访问的虚拟路径,比如请求地址中有login.htm时,会执行这个方法
//如果配置多个虚拟路径要使用{}。
@RequestMapping(value = { "/login.htm", "a.html", "c.htm" })
public void Login(User user) {
System.out.println("登录成功");
System.out.println(user);
}
/**
* method = RequestMethod.POST这个表示这个方法只能处理post请求
* @param user
* @return
*/
@RequestMapping(value = "/regiter.htm", method = RequestMethod.POST)
public String regiter(User user) {
System.out.println(user);
System.out.println("注册成功");
return "/success.jsp";//转到success.jsp页面
}
}