发表于: 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        

根目录,没什么好说的,下面有maintest

Main        

主要目录,可以放java代码和一些资源文件。

Java        

存放我们的java代码,这个文件夹要使用Build Path -> Use as Source Folder,这样看包结构会方便很多,新建的包就相当于在这里新建文件夹咯。

Resources        

存放资源文件,譬如各种的springmybatislog配置文件。

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


返回列表 返回列表
评论

    分享到