springmvc入门大解

    科技2022-08-08  93

    springmvc入门

    一,mvc

    .mvc设计概述


    在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起 要求开发者不仅要掌握 Java ,还要有高超的前端水平 前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试 代码难以复用 正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP + Java Bean 所替代了,早期的 MVC 模型(Model2)就像下图这样: 首先用户的请求会到达 Servlet,然后根据请求调用相应的 Java Bean,并把所有的显示结果交给 JSP 去完成,这样的模式我们就称为 MVC 模式。

    M 代表 模型(Model) 模型是什么呢? 模型就是数据,就是 dao,bean V 代表 视图(View) 视图是什么呢? 就是网页, JSP,用来展示模型中的数据 C 代表 控制器(controller) 控制器是什么? 控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上,Servlet 扮演的就是这样的角色。

    二,springmvc

    .Spring MVC 的架构

    为解决持久层中一直未处理好的数据库事务的编程,又为了迎合 NoSQL 的强势崛起,Spring MVC 给出了方案: 传统的模型层被拆分为了业务层(Service)和数据访问层(DAO,Data Access Object)。 在 Service 下可以通过 Spring 的声明式事务操作数据访问层,而在业务层上还允许我们访问 NoSQL ,这样就能够满足异军突起的 NoSQL 的使用了,它可以大大提高互联网系统的性能。

    特点: 结构松散,几乎可以在 Spring MVC 中使用各类视图 松耦合,各个模块分离 与 Spring 无缝集成

    .springmvc工作原理

    SpringMVC工作流程概述:

    1、客户端向web服务器(如tomcat)发送一个http请求,web服务器对http请求进行解析,解析后的URL地址如果匹配了DispatcherServlet的映射路径(通过web.xml中的servlet-mapping配置),web容器就将请求交给DispatcherServlet处理。

    2、DispatcherServlet接收到这个请求后,再对URL进行解析,得到请求资源标识符(URI)。然后调用相应方法得到的HandlerMapping对象,再根据URI,调用这个对象的相应方法获得Handler对象以及它对应的拦截器。(在这里只是获得了Handler对象,并不会操作它,在SpringMVC中,是通过HandlerAdapter对Handler进行调用、控制的)

    3、DispatcherServlet根据得到的Handler对象,选择一个合适的HandlerAdapter,创建其实例对象,执行拦截器中的preHandler()方法。

    4、在拦截器方法中,提取请求中的数据模型,填充Handler入参,所以所有准备工作都已做好,开始执行Handler(我们写的controller代码并不是能被直接执行,需要有刚才那些操作,才能转变为Handler被执行)。

    5、Handler执行完毕后返回一个ModelAndView对象给DispatcherServlet。

    6、这个ModleAndView只是一个逻辑视图,并不是真正的视图,DispatcherServlet通过ViewResolver视图解析器将逻辑视图转化为真正的视图(通俗理解为将视图名称补全,如加上路径前缀,加上.jsp后缀,能指向实际的视图)。

    7、DispatcherServlet通过Model将ModelAndView中得到的处数据解析后用于渲染视图。将得到的最终视图通过http响应返回客户端。

    接下来让我们写一个springmvc项目:

    第一步:在IDEA中新建springmvc项目

    并取名字为:[HelloSpringMVC],点击[Finish]:

    IDEA 会自动帮我们下载好必要的 jar 包,并且为我们创建好一些默认的目录和文件,创建好以后项目结构如下: 第二步:修改 web.xml 我们打开 web.xml ,按照下图完成修改: 把元素的值改为 / ,表示要拦截所有的请求,并交由Spring MVC的后台控制器来处理,改完之后: 第三步:编辑 dispatcher-servlet.xml 这个文件名的开头 dispatcher 与上面 web.xml 中的 元素配置的 dispatcher 对应,这是 Spring MVC 的映射配置文件(xxx-servlet.xml),我们编辑如下:

    第四步:编写 HelloController 在 Package【controller】下创建 【HelloController】类,并实现 org.springframework.web.servlet.mvc.Controller 接口:

    出现了问题: javax.servlet 包找不到 解决: 将本地 Tomcat 服务器的目录下【lib】文件夹下的 servlet-api.jar 包拷贝到工程【lib】文件夹下,添加依赖 Spring MVC 通过 ModelAndView 对象把模型和视图结合在一起

    这里表示视图的是index.jsp 模型数据的是 message,内容是 “Hello Spring MVC” 第五步:准备 index.jsp 将 index.jsp 的内容修改为: 内容很简单,用El表达式显示 message 的内容。 第六步:部署 Tomcat 及相关环境 在【Run】菜单项下找到【Edit Configurations】 配置 Tomcat 环境: 选择好本地的 Tomcat 服务器,并改好名字: 在 Deployment 标签页下完成如下操作: 点击 OK 就好了,我们点击右上角的三角形将 Tomcat 服务器运行起来。

    出现的问题: Tomcat 服务器无法正常启动 原因: Tomcat 服务器找不到相关的 jar 包 解决方法: 将【lib】文件夹整个剪贴到【WEB-INF】下,并重新建立依赖: 第七步:重启服务器 重启服务器,输入地址:localhost/hello 参考资料:Spring MVC 教程

    Processed: 0.011, SQL: 8