当前位置: 首页 > news >正文

Spring MVC框架

Spring MVC框架

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。
我们知道三层架构的思想,并且如果你知道ssh的话,就会更加透彻的理解这个思想,struts2在web层,spring在中间控制,hibernate在dao层与数据库打交道,而前面刚写的mybatis跟hibernate一样,与数据库打交道在dao层的另一个框架,而今天所要讲解的springmvc是在web层的另一个框架

在这里插入图片描述

一、Spring MVC依赖包jar下载导入

方法1、spring5.0.9官网下载:
https://github.com/spring-projects/spring-framework/tree/5.0.x
(需要科学上网,不然相当相当慢)
方法2、Spring Framework 5.0.9下载地址:
https://repo.spring.io/ui/native/release/org/springframework/spring/
(速度快,推荐该方法,下载“.dist”,完全够用)

.dist是spring框架的jar包,文档和项目;
.docs下存放相关文档,开发指南和API;
.schema存放了spring框架所用的xsd(XML schemas definition)文件。

在eclipse中导入依赖包jar方法众多,可以在WEB-INF文件下创建lib文件夹,将libs文件夹中的所有依赖包复制粘贴即可(为防止出错及以后使用,全部复制粘贴即可,反正不大)。
在这里插入图片描述

二、Spring MVC的入门程序

1、在web.xml中配置一个serlvet,用来控制。
2、编写一个handler(controller)类,用来做业务处理。
3、编写jsp或者别的视图,用来展示数据。

思路已经有了,那么就开始编写吧。
问题描述:使用spring mvc来完成前端请求的处理。

结构如下:

在这里插入图片描述

三、配置文件编写

1、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" ><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/SpringMVC.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

2、SpringMVC.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans 	xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 处理器映射器 --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!-- 处理器适配器 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">	</bean><bean name="/getAllUser" class="com.mr.controller.FruitsController"/></beans>

四、编写Handler处理器和视图

注意:

包名不同;

再这个可能会出现以下报红

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

在这里插入图片描述

这是因为项目缺少两个jar依赖,分别为jsp-api.jar和servlet-api.jar。
servlet-api.jar是支持servlet的jar包。

你如果编写过servlet就知道要用到HttpServletRequest和HttpServletResponse等对象,这些对象都是要靠这个jar包才能使用的。如果你安装了Tomcat,这个jar包一般在tomcat安装目录\lib
文件夹下面有,当你把web项目部署到tomcat,会自动加载这个jar包来识别Serlvet一些对象

这是下载资源链接,直接点击下载即可,是免费的:jar下载
将其解压复制粘贴至lib文件下。

1、FruitsController.java

package com.mr.controller;import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;import com.mr.entity.Users;public class FruitsController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {// TODO Auto-generated method stubList<Users> listU = UsersService();ModelAndView mav = new ModelAndView();mav.addObject("listU",listU);mav.setViewName("/WEB-INF/jsp/usersList.jsp");return mav;}//模拟Service的内部类public List<Users> UsersService(){List<Users> list = new ArrayList<>();Users u = new Users();u.setName("Steven");u.setAge(30);u.setTel("138********");Users u1 = new Users();u1.setName("MR");u1.setAge(10);u1.setTel("12345678");list.add(u);list.add(u1);return list;}
}

2、Users.java

package com.mr.entity;public class Users {private String name;private int age;private String tel;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}}

由于制定了返回的JSP视图路径,所以在工程/WEB-INF/jsp路劲下创建名为“usersList.jsp”的jsp文件,具体内容如下:

3、users List.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><table><Tr><td>姓名</td><td>年龄</td><td>电话</td></Tr><c:forEach items="${listU }" var="list"><tr><td>${list.name }</td><td>${list.age }</td><td>${list.tel }</td></tr></c:forEach></table>
</body>
</html>

五、工程测试

启动tomcat后出现红色:
警告: [SetPropertiesRule{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:9-3’ did not find a matching property.

警告: No mapping found for HTTP request with URI [/9-3/] in DispatcherServlet with name ‘SpringMVC’
在这里插入图片描述
咳咳不要慌!!
从信息上看,是server.xml的Context节点不支持source属性。
这是因为我们在eclipse下,通过tomcat部署web工程时,tomcat的配置文件server.xml中会自动生成一个关于该web工程的配置信息,类似于下面的东西:

<Context docBase="webPoject" path="/webProject" reloadable="true" source="org.eclipse.jst.jee.server:webProject"/>  

而默认情况下,server.xml的 Context元素不支持名称为source的属性,所以会发出警告。
总而言之,就是eclipse当前不支持,大家可以根据以下两种方法测试。

方法一:

在eclipse下以tomcat部署的情况下(报错情况下),在浏览器中访问

http://localhost:8080/SpringMVCTest/getAllUser

结果如下:

在这里插入图片描述

方法二:

双击server,勾选上【Server Options】里面的【Publish module contexts to separte XML files】,如下图即可。需要查下Tomcat的相关选项资料。ctr+s,启动tomcat,即可运行成功。
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/65826.html

相关文章:

  • Illustrator如何使用图层与蒙版之实例演示?
  • Office Tool Plus的使用
  • ​射频PCB 设计​的六大条技巧
  • 优化了成本和安装难度后,UWB信标能否取代蓝牙信标?
  • 深入理解Java虚拟机——垃圾回收算法
  • git-rebase和merge
  • 【JavaWeb 用户认证】Cookie、Session、Token、JWT、Interceptor、SpringBoot、Spring Security
  • 6个月的测试,来面试居然要15K,我一问连5K都不值
  • RSA--维纳攻击--代码和题目分析
  • 飞腾ft2000-麒麟V10-SP1安装Docker、运行gitlab容器
  • C++ 的类型转换
  • 【Windows】普通控制台EXE程序转为windows服务方式运行的详细步骤
  • NSSCTF [suctf 2019]hardcpp WP 控制流混淆
  • 计算机毕业论文内容参考|基于神经网络的网络安全态势感知技术研究
  • Flask框架之Request、Response、Cookies、Session等对象的使用
  • 信号与槽机制一
  • nodejs 复制文件到指定目录
  • 第八章 使用Apache服务部署静态网站
  • Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用
  • 盲目自学网络安全只会成为脚本小子?
  • 文从字顺|程序员须知,如何编写高质量代码
  • PCIe物理层弹性缓存机制(详细)解析-PCIe专题知识(四)
  • 分片上传和断点续传的区别?实现思路是什么?
  • 微前端 qiankun@2.10.5 源码分析(二)
  • 08异步请求:何种场景下应该使用异步请求?
  • 【深度学习 | Transformer】Transformers 教程:pipeline一键预测
  • HTMLCSS
  • 【安装Nginx】
  • VSCode作业1:猜数字游戏和简单计数器(包含完整代码)
  • NANK OE骨传导开放式蓝牙耳机发布,极致体验拉满!