用SpringMVC展示一个helloword
SpringMVC介绍
Spring MVC是Spring提供的一个强大而灵活的web框架。有着很多的优点其余的介绍官方也有。下面是springmvc的两张工作原理图网上找的很多当然也可以自己画。
第一张算是简略版的 第二张是详细的,在第二张里写明了执行的顺序,搭建springmvc时就按照第二张的流程图的顺序去搭建。
- DispatcherServlet表示前端控制器,它会接受请求和拦截请求用户向服务端发送一次请求。
假设一个请求:https://localhost:8080/myProject/hello
https://localhost:8080 这个是服务器域名
myProject 这个是表示的站点名项目打包时是可以添加的
hello表示控制器
总结就是请求位于服务器https://localhost:8080上myProject站点的hello控制器
- DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。
- HandlerExecution表示具体的Handler,主要作用是根据url查找控制器。
- HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。
- DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controller
- HandlerAdapter处理器适配器去执行Controller并得到ModelAndView(数据和视图),并层层返回给DispatcherServlet
DispatcherServlet将ModelAndView交给ViewReslover视图解析器解析,然后返回真正的视图。 - DispatcherServlet将模型数据填充到视图中
- DispatcherServlet将结果响应给用户
搭建第一步
搭建前最好还是去理解一下第二张图的工作原理,理解之后在搭建的时候就不会有太大疑问了。
新建一个maven项目(这里使用的是注解)
项目结构
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">
<!-- 第一步这里是-->
<!-- 配置DispatchcerServlet 这是第一步-->
<servlet>
<servlet-name>HelloWord</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 通过初始化参数指定HelloWord配置文件的位置,进行关联-->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 1:当classpath不加*的时候表示引用当前项目类路径下满足条件的文件-->
<!-- 2:当classpath加*的时候表示引用当前项目或者所引用jar包里面满足条件的文件-->
<param-value>classpath:springmvc-sevlert.xml</param-value>
</init-param>
<!-- 启动顺序,数字越小,启动越早-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 所有请求都会被springmvc拦截-->
<servlet-mapping>
<servlet-name>HelloWord</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Springmvc-servlet.xml配置代码
<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.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- //第二步这里是-->
<!-- 配置自动扫描的包 ,指定包下的注解生效-->
<context:component-scan base-package="com.zj.controller"/>
<!-- 让Spring MVC不处理静态资源 像。css 。js之类的-->
<mvc:default-servlet-handler />
<!--
写了这个就不用再去配置DefaultAnnotationHandlerMapping和和一个AnnotationMethodHandlerAdapter这个了
-->
<mvc:annotation-driven />
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
hello控制器代码
package com.zj.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//这里不能用@RestController 这个返回的是一个字符串
@Controller
public class HelloControl {
@RequestMapping("/hello")
public String hello(Model model){
//封装数据
model.addAttribute("msg","SpringMVC 你好");
//这个会被
return "hello";
}
}
pom.xml文件里的依赖包的可以去搜很多
这是maven依赖包的一个地址里面有很多需要什么自己可以搜很方便https://mvnrepository.com/
hello.jsp页面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>${msg}</h1>
</body>
</html>
运行效果
以上就是简单的一个小案例,因为即将毕业找工作,所以也在温故以前的东西,这个也是看b站狂神的视频温故的。