SpringMVC初探-HelloWorld

时间:2023-03-08 19:54:01

MVC的概念

MVC是一种设计模式,即Model--View-Controller,模型--视图--控制器

  • Model(模型)表示应用程序核心(比如数据库记录列表)。
  • View(视图)显示数据(数据库记录)。
  • Controller(控制器)处理输入(写入数据库记录)

Model常常是向数据库中存取数据

View一般根据Model的数据来创建

Controller一般负责从视图读取数据,将数据发给模型

SpringMVC

在****的专栏里看到一张图,很好的讲到了SpringMVC的结构

SpringMVC初探-HelloWorld

首先是DispatcherServlet,即前端控制器,它不要我们自己来创建,而是SpringMVC框架内置的,但需要在Bean.xml

中配置它,之后它根据web.xml中的配置,得到URL的相关信息,再根据HandlerMapping找到一个合适Handler即(Controller)

,随后,再交由HandlerAdapter来执行这个Handler,handler执行后,向HandlerAdapter返回一个ModelAndView对象,

HandlerAdapter再向前端控制器返回这个ModelAndView对象,之后,前端控制器再找到一个解析器,即ViewResolver,

处理ModelAndView对象,返回一个真正的视图(jsp).然后前端控制器从ModelAn的View中解析出参数得到数据,组成

View返回给浏览器或者客户端

HelloWorld实战

第一步在WEB-INF的web.xml里面配置前端控制器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

前端配置器的名字不能随便乱取,接下来的SpringMVC的配置文件的名字和他有联系

接下来创建[前端控制器名字]-servlet,xml文件,即springmvc-servlet.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="controller" />
<bean id="irViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

 

<context>标签是用来查找使用构造型(stereotype)注解所标注的类,如@Component(组件),@Service(服务),

@Controller(控制器),@Repository(数据仓库),这里当然就是查找控制器的了

下面bean的两个属性是表示视图文件所在的相对路径,prefix表示前缀,suffix表示后缀,这里则表示/WEB-INF/page文件夹

下面的jsp文件

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping(value = "/hello")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String hello(ModelMap modelMap){
modelMap.addAttribute("message","Hello world");
return "hello";
}
}

然后在WEB-INF新建一个page文件夹存放我们的视图,即jsp文件,对应上面解析器的配置

新建hello.jsp

<%--
Created by IntelliJ IDEA.
User: 31786
Date: 2018/10/16
Time: 11:35
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>

  

这里message和HelloController里面的modelMap对象中的message对应,hello.jsp的名字和HelloController中hello方法中

返回的字符串对应

之后启动项目,大功告成

SpringMVC初探-HelloWorld