发表于: 2020-05-08 23:38:28
1 1512
今天完成的事情:
学习 SpringMVC
之前做任务已经用过了 Spring,后来又做深度思考了解了它在解决的问题,但是细节还是不清楚,现在又来了个 SpringMVC。
简单梳理一下:
spring:把代码与配置分开
springMVC:拆分模块,降低服务端编程的复杂度,需要后端来返回网页内容(HTML等),视图的选择严重依赖于Servlet API,前端需要在后端的代码上编辑网页。
Restful SpringMVC :专注于业务逻辑的编写,不需要管理视图模块的编写。
什么是 MVC:
MVC 是一种设计模式,它强制性把应用程序的数据展示、数据处理与控制流程分开。
MVC 把程序分为三个核心模块:模型、视图、控制器,他们互相连结又分别担当不同的任务。
模型:即需要展示的数据,一个模型可以给多个视图提供数据。
视图:负责模型展示,即用户界面上客户看到的东西。
控制器:负责应用的流程控制,接受用户请求-》委托给模型处理-》获取模型数据给视图展示
web 服务器经典 MVC(JSP Model 2):
SpringMVC(橙色部分需要自己实现):
Restful SpringMVC 处理过程:
SpringMVC 初体验(REST 先放一边,把这个跑起来再说):
新建一个 maven-archetype-webapp 项目
项目结构如上图(新建完项目如左图,发现没有测试目录,右键新建文件夹就会发现会提示该新建什么目录,位置都给我选好了,我真的觉得离开 idea 我就完全不会做项目了,很慌)
文件名 | 作用 |
Src | 根目录,没什么好说的,下面有main和test。 |
Main | 主要目录,可以放java代码和一些资源文件。 |
Java | 存放我们的java代码,这个文件夹要使用Build Path -> Use as Source Folder,这样看包结构会方便很多,新建的包就相当于在这里新建文件夹咯。 |
Resources | 存放资源文件,譬如各种的spring,mybatis,log配置文件。 |
Mapper | 存放dao中每个方法对应的sql,在这里配置,无需写daoImpl。 |
Spring | 这里当然是存放spring相关的配置文件,有dao service web三层。 |
Sql | 其实这个可以没有,但是为了项目完整性还是加上吧。 |
Webapp | 这个貌似是最熟悉的目录了,用来存放我们前端的静态资源,如jsp js css。 |
Resources | 这里的资源是指项目的静态资源,如js css images等。 |
WEB-INF | 很重要的一个目录,外部浏览器无法访问,只有羡慕内部才能访问,可以把jsp放在这里,另外就是web.xml了。你可能有疑问了,为什么上面java中的resources里面的配置文件不妨在这里,那么是不是会被外部窃取到?你想太多了,部署时候基本上只有webapp里的会直接输出到根目录,其他都会放入WEB-INF里面,项目内部依然可以使用classpath:XXX来访问,好像IDE里可以设置部署输出目录,这里扯远了~ |
Test | 这里是测试分支。 |
Java | 测试java代码,应遵循包名相同的原则,这个文件夹同样要使用Build Path -> Use as Source Folder,这样看包结构会方便很多。 |
Resources | 没什么好说的,好像也很少用到,但这个是maven的规范。 |
新项目导入到版本库。
cn.mogeek.controller.helloworld.java
package cn.mogeek.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class helloworld {
@RequestMapping("/helloworld")
public String hello(){
System.out.println("hello world!");
return "success";
}
}
src/main/webapp/WEB-INF/web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<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_3_1.xsd"
version="3.1">
<!--配置DispatcherServlet-->
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--配置初始化参数:作用是配置SpringMVC配置文件的位置和名称-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcherServlet-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
src/main/webapp/index.jsp
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
最终还是跑起来了,虽然我都不知道是怎么起来的···
遇到的问题:
1.SpringMVC jar 包的配置搜到如下两种,差异在于 spring-webmvc 与 org.springframework.web.servlet
配置一:
配置二:
2.忘记检出代码再继续工程了,我还纳闷了一下,怎么今天做的修改都不跳出提示了,右键也没法新加文件···
3.tomcat 纠结了一下,虽然最后跑起来了,但是还是不太清楚 idea 上怎么配置
4.CMD 中文乱码,手动执行 chcp 65001 可以解决这个问题,但是开启 tomcat 之后他会自己打开一个控制台,乱码不受我控制,idea 里面跑起来也会乱码,得想个办法解决
明天的计划:
再熟悉一下 SpringMVC
整理接口文档
参考资料:
深入浅出SpringMVC(小白篇):https://www.jianshu.com/p/c509a8b025d7
SprigMVC—理解MVC及快速入门:https://www.cnblogs.com/MrSaver/p/6424291.html
评论