SpringMVC的认识
什么是SpringMVC?
SpringMVC只是基于Spring的一个MVC框架,理解SpringMVC需要事先理解以下几个关键的概念:
- 前端控制器(DispatchServlet)
- HandlerMapper(处理器映射器)
- HandlerAdapter(处理器适配器)
- 视图解析器(ViewResolver)
- 页面控制器(controlller)
SpringMVC和经典的ServletMVC架构的异同
- 两个控制器(前端控制器和页面控制器)
- 视图解析器和Forward以及Dispatch的区别
- 携带数据的方式不同(Request.setAttribute()以及ModelAndView)
- SpringMVC面向方法的url映射(Servlet是面向Servlet类)
- 四大注解的使用(@Service,@Repository,@Controller,@Component)
- 模块化开发,解耦的目的就是为了复用。
SpringMVC项目的搭建流程
两个关键:
- Web.xml配置(1.DispatchServlet的配置 2.Content-param的配置“classpath”和一般配置的处理)
- spring-servlet.xml的配置(1.context:component-scan 2.视图解析器的配置VewResolver 3.注解映射的支持mvc:annotation-driver )jar包的导入:
SpringMVC的几个应用
HelloSpringMVC的实现:
步骤 | 操作 | 效果 |
---|---|---|
步骤一 | 配置web.xml以及helloworld-servlet.xml | 无 |
步骤二 | 创建Controller处理url请求 | 无 |
步骤三 | 创建跳转的.jsp并获取Controller中的数据(键-值) | 网页显示HelloSpringMvc |
配置详情:
步骤一:
- web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
- hello-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.tutorialspoint" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
步骤二:
@Controller
@RequestMapping(“/hello”)
public class HelloController{
@RequestMapping(method=RequestMethod.GET)
public String sendMsg(Modelmap model ){
model.addAttribute("msg","Hello SpringMVC!");
return "hello";
}
}
步骤三:
...
<body>
<h1>${msg}</h1>
</body>
Form表单的处理
步骤 | 操作 | 效果 |
---|---|---|
步骤一 | xml文件的配置 | 无 |
步骤二 | Student实体类的创建 | 无 |
步骤三 | @Controller类的创建,并在类中分别定义跳传Form表单和处理结果的方法 | 无 |
步骤四 | 两个jsp的创建一个是包含Form表单的提交信息界面一个是提交后展示提交结果的界面 | 提交信息界面点击提交之后跳转到信息展示界面 |
前两步省略…
步骤三:
@Controller
public class MsgManager{
@RequestMapping("/msgEdit")
public String jumpToForm(){
return "form";
}
@RequestMapping("/subMsg")
public String manageResult(ModelMap model,Student stu){
model.addAttribute("name",stu.getName());
model.addAttribute("age",stu.getAge());
model.addAttribute("hobbys",stu.getHobbys());
model.addAttribute("height",stu.getHeight())
return "result";
}
}
步骤四:
- form.jsp
<body>
<form: form method="POST" action="/subMsg">
<table>
<tr>
<td><form:label path="name">Name</form:label></td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td><form:label path="age">Age</form:label></td>
<td><form:input path="age" /></td>
</tr>
<tr>
<td><form:label path="id">id</form:label></td>
<td><form:input path="id" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit"/>
</td>
</tr>
</form>
</body>
- result.jsp
<body>
<h1>学生信息展示结果</h1>
<table>
<tr>
<td>姓名:</td>
<td>${name}</td>
</tr>
...
</table>
</body>