gitee地址:spring start
所有代码都会在上面开源
选择new->project
选择maven项目创建
设定本项目的group信息
设置maven的setting文件和local repository,一般没有特殊设定保持默认即可
生成的工程目录如下所示,但是还缺少java、resources目录
手动添加java、resource目录
此时由于我们是用maven生成的web项目,webapp/WEB_INF/web.xml配置文件为默认的需要修改为我们当前tomcat容器的环境web.xml,本人用的是tomcat7.0.108版本。首先删除web.xml文件
从tomcat的示例工程中找一份web.xml进行适配,这里推荐ROOT app下的配置(apache-tomcat-7.0.108webappsROOTWEB-INFweb.xml文件)。
此时一个web工程创建完成
2、在IDEA中配置tomcat容器启动点击Add Configurations或者Run->Add Configurations
配置本地tomcat的目录,配置浏览器,添加tomcat的deployment部署包(如果没有tomcat,建议现在官网同版本tomcat)
点击Run测试会出现index.jsp的内容,默认是Hello World!
3、解决tomcat控制台输出乱码问题将tomcat目录下的conflogging.properties中的UTF-8改为GBK编码格式
()
()
自此我们的一个web工程算是搭建好了,但是者仅仅是一个“空壳”,后面我们会注入”灵魂“(引入spring)
2、引入Spring-webmvc 5.3.4我们是一个Springmvc项目,自然需要引入核心的Spring包依赖和相关依赖,后续需要用到哪个包我们再逐一引入。对于spring的相关知识这里不做进一步解释。
这里我们引入spring-webmvc 5.3.4版本
5.3.4 org.springframework spring-webmvc ${spring.version}
推荐IDEA的插件maven helper,可以很好的帮助我们解决依赖关系与冲突。通过maven hepler我们可以看到spring-webmvc自动引入了spring的一些依赖
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FMoSxfJd-1636294912542)(https://gitee.com/zjurenjie/spring-start/raw/master/spring-mvc-start-wiki/figs/2.2.png)]
3、搭建MVC项目上一步中我们已经把tomcat和spring引入到了工程中,但是二者还没有建立联系。我们知道tomcat是一个servlet容器,mvc是一个框架,也是要基于servlet,所以要把mvc加载到tomcat中。这里介绍一下MVC架构中的各个角色:
1、前端控制器DispatcherServlettomcat需要一个servlet,而spring提供了DispatcherServlet,用于处理所有request请求。所以在web.xml中创建DispatcherServlet
- web.xml
dispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:application.xml 1 dispatcherServlet /*
因为加载的是application.xml,所以在resources下创建application.xml,作为spring的bean配置文件,并开启包扫描。
我们简单介绍一下WEB.xml中的内容:
servlet:Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的**,**运行在服务器端。我们编写java程序想要在网上实现 聊天、发帖、这样一些的交互功能,普通的java技术是非常难完成的。sun公司就提供了Servlet这种技术供我们使用。所有我们页面实现的功能都是基于Servlet的。
servlet-mapping: 每一个servlet都需要有一个servlet-mapping与之对应,并用url-pattern指定满足条件的url会被此servlet处理
contextConfigLocation: DispatcherServlet初始化值,此值可以配置为spring的配置文件,会将spring的配置生效。
load-on-startup:标记容器是否在启动的时候就加载这个servlet,值必须是一个整数,表示servlet应该被载入的顺序,当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet, 当值小于0或者没有指定时,则表示容器应该在servlet被选择(客户首次访问时)才去加载;正数值越小表示该servlet优先级越高,启动时就越先被加载;值相同时,容器自己选择顺序来加载。
-
application.xml
context:component-scan:配置spring,开启包扫描,被@Component、@Controller、@Service、@Repository标注的类都会交由Spring托管一个Bean。后面三个注解分别对应Controller层、Service层和Dao层(持久化层),不过本质上与@Component没有什么区别。
mvc:annotation-driven:配置MVC,开启MVC相关能力。具体来说就是会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean,让我们可以聚焦于Controller的实现。
2、创建Controller从上图中我们可以看到有了Servlet之后,我们还需要HandlerMapping、HandlerAdapter、Handler处理器(Controller)。而SpringMVC会为我们创建默认的HandlerMapping和HandlerAdapter,所以我们只需要关注于Controller的设计,真正的聚焦于业务,不必为搭建框架而苦恼,这也时SpringMVC如此盛行的原因之一。
我们新建一个Package,名字叫做Controller,然后我们将以后所有的Controller放在这里面,并默认以***Controller方式命名。
@Controller
public class HelloController {
@RequestMapping("/hello")
public String helloWorld() {
System.out.println("hello world");
return "success";
}
}
RequestMapping:指定URL、请求方法、请求参数和请求头的映射,表示此请求会由此方法来处理。
3、建立请求上面我们建立了一个/hello的请求处理,现在只需要在主页index.jsp中添加这个请求即可
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Hello World!
入门案例
入门案例
此时我们已经建立了SpringMvc处理流程图中的1~5步,我们此时启动tomcat,将会出现一个链接,点击链接,在控制台可以输出hello world,表示上述过程完成。
4、创建视图层(ModelAndView)上一步中我们只是完成了请求的处理,但是请求的处理结果并没有反馈给前端页面。相反,我们在前端页面却看到了404的错误。
那我们如何将我们处理结果返回给前端呢,这就时视图层的工作了。视图层会将我们处理的结果以页面的形式展示出来,首先我们引入视图层框架Thymeleaf。
Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎,能够处理 HTML,XML,Javascript,CSS 甚至纯文本。简而言之就是一个页面显示的引擎。
在pom.xml中引入依赖:
3.0.12.RELEASE org.thymeleaf thymeleaf ${thymeleaf.version} org.thymeleaf thymeleaf-spring5 ${thymeleaf.version}
在application.xml创建视图解析器和Thymeleaf解析器
这里ThymeleafViewResolver时视图解析器,SpringResourceTemplateResolver是模板解析器,prefix指定html文件所在路径。
创建success.html文件
Good Thymes Virtual Grocery
Success
之后启动工程,单击页面可以看到Success字样,这样我们就正式搭建了一套简单的MVC工程



