发表于: 2018-04-05 22:31:32

1 638


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

今天看了http://downpour.iteye.com/blog/1330596 Spring MVC的深度好文

了解了SpringMVC

下图为Servlet的流程

SpringMVC 将整个处理流程规范化,并把每一个处理步骤分派到不同的组件中进行处理。 

这个方案实际上涉及到两个方面: 

  • 处理流程规范化 —— 将处理流程划分为若干个步骤(任务),并使用一条明确的逻辑主线将所有的步骤串联起来
  • 处理流程组件化 —— 将处理流程中的每一个步骤(任务)都定义为接口,并为每个接口赋予不同的实现模式

在SpringMVC的设计中,这两个方面的内容总是在一个不断交叉、互为补充的过程中逐步完善的。 

处理流程规范化是目的,对于处理过程的步骤划分和流程定义则是手段。因而处理流程规范化的首要内容就是考虑一个通用的Servlet响应程序大致应该包含的逻辑步骤: 

  • 步骤1 —— 对Http请求进行初步处理,查找与之对应的Controller处理类(方法)
  • 步骤2 —— 调用相应的Controller处理类(方法)完成业务逻辑
  • 步骤3 —— 对Controller处理类(方法)调用时可能发生的异常进行处理
  • 步骤4 —— 根据Controller处理类(方法)的调用结果,进行Http响应处理

这些逻辑步骤虽然还在我们的脑海中,不过这些过程恰恰正是我们对整个处理过程的流程化概括,稍后我们就会把它们进行程序化处理。 

所谓的程序化,实际上也就是使用编程语言将这些逻辑语义表达出来。在Java语言中,最适合表达逻辑处理语义的语法结构是接口,因此上述的四个流程也就被定义为了四个不同接口,它们分别是: 

  • 步骤1 —— HandlerMapping
  • 步骤2 —— HandlerAdapter
  • 步骤3 —— HandlerExceptionResolver
  • 步骤4 —— ViewResolver

结合之前我们对流程组件化的解释,这些接口的定义不正是处理流程组件化的步骤嘛?这些接口,就是组件


SpringMVC应用程序的三要素

  • SpringMVC将Http处理流程抽象为一个又一个处理单元
  • SpringMVC定义了一系列组件(接口)与所有的处理单元对应起来
  • SpringMVC由DispatcherServlet贯穿始终,并将所有的组件串联起来

在整个过程中,组件和DispatcherServlet总是维持着一个相互支撑的关系: 
DispatcherServlet —— 串联起整个逻辑主线,是整个框架的心脏

组件 —— 逻辑处理单元的程序化表示,起到承上启下的作用,是SpringMVC行为模式的实际承载者

SpringMVC的整个运行体系,是由DispatcherServlet、组件和容器这三者共同构成的。

DispatcherServlet是逻辑处理的调度中心,组件则是被调度的操作对象。

而容器在这里所起到的作用,是协助DispatcherServlet更好地对组件进行管理。

三个元素之间的关系表述:

  • DispatcherServlet - 容器 —— DispatcherServlet对容器进行初始化
  • 容器 - 组件 —— 容器对组件进行全局管理
  • DispatcherServlet - 组件 —— DispatcherServlet对组件进行逻辑调用


对于DispatcherServlet的初始化主线,我们首先应该明确几个基本观点: 

  • 初始化主线的驱动要素 —— servlet中的init方法
  • 初始化主线的执行次序 —— HttpServletBean -> FrameworkServlet -> DispatcherServlet
  • 初始化主线的操作对象 —— Spring容器(WebApplicationContext)和组件


在这幅图中,我们站在一个动态的角度将DispatcherServlet、容器(WebApplicationContext)和组件这三者之间的关系表述出来,同时给出了这三者之间的运行顺序和逻辑过程。


这是今天看的关于Spring MVC的内容。

然后我试着整合了下SSM


然后配置文件跟昨天没差多少 只需要把监听器打开 

然后在Contreller层的UserController类里 添加方法

@Autowired
UserService userService;
@RequestMapping("/listUser")
public ModelAndView listUser() throws Exception {
ModelAndView mav =new ModelAndView();
List<User> cs =userService.list();
mav.addObject("cs",cs); //放入转发参数
mav.setViewName("listUser"); //放入Jsp路径
return mav;

添加一个listUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.util.*"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>

<head>
<title>大概是个数据库</title>
</head>

<body>

<table align='center' border='1' cellspacing='0'>  //align标签 文档中的一个部分居中对齐
<tr>
<td>id</td>
<td>create_at</td>
<td>update_at</td>
<td>stu_name</td>
<td>profession</td>
<td>join_date</td>
<td>online_id</td>
<td>brother</td>
<td>school</td>
<td>daily</td>
<td>wishing</td>
<td>qq</td>
<td>heard</td>
</tr>
<c:forEach items="${cs}" var="c" varStatus="st">. //<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。
<tr>
<td>${c.id}</td>
<td>${c.create_at}</td>
<td>${c.update_at}</td>
<td>${c.stu_name}</td>
<td>${c.profession}</td>
<td>${c.join_date}</td>
<td>${c.online_id}</td>
<td>${c.brother}</td>
<td>${c.school}</td>
<td>${c.daily}</td>
<td>${c.wishing}</td>
<td>${c.qq}</td>
<td>${c.heard}</td>
</tr>
</c:forEach>
</table>
</body>

</html>

然后写了一个添加用户界面

@RequestMapping("/addUser")
public ModelAndView add(User user) throws Exception {
ModelAndView mav = new ModelAndView("addUser");
return mav;

Controller层

然后是addUser.jsp







明天计划的事情:(一定要写非常细致的内容) 

明天再看一下rest风格构造

尝试把用户输入链接进数据库。使用restful的方式

在做一下分页 再看看jsp写法 各个标签作用
遇到的问题:(遇到什么困难,怎么解决的) 


收获:(通过今天的学习,学到了什么知识)


返回列表 返回列表
评论

    分享到