Spring MVC框架

news/2024/11/29 13:39:42/

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.ppmy.cn/news/62936.html

相关文章

ProbTransformer:应对RNA折叠等自然过程数据模糊的神秘力量

编译 | 于洲‍ 今天我们介绍来自德国弗赖堡大学计算机科学系的Jrg K.H. Franke, Frederic Runge以及Frank Hutter发表在NeurIPS 2022会议上的工作&#xff0c;该文章介绍了一种新颖的基于概率的神经网络架构ProbTransformer&#xff0c;它是Transformer生态系统的一种层级增强&…

Elasticsearch查询文档--常见API篇(附详细代码和案例图文)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将介绍Elasticsearch在Java中的几种API的使用&#xff0c;这块内容不作为面试中的重点。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x1f44f;&#x1f4…

Android+opencv实时人脸与人眼检测案例分享

软件版本&#xff1a; Android Studio Electric Eel 2022.1.1 Patch 2 https://sourceforge.net/projects/opencvlibrary/files/4.5.0/opencv-4.5.0-android-sdk.zip/download 创建工程并导入opencv sdk: 导入opencv sdk: File->New->Import Module 添加工程依赖&am…

如何在 AlmaLinux 8 上安装和使用 Docker

Docker 是面向开发人员和系统管理员的强大平台&#xff0c;可简化在软件容器内部署应用程序的过程。 容器允许您将应用程序及其所有部分(代码、运行时、系统工具、系统库——通常位于 /usr/bin 或 /usr/lib 中的任何内容)打包&#xff0c;以便它可以在任何 Linux 机器上一致地运…

应届生如何在职场中成功发展

作为职场新人&#xff0c;进入一个全新的环境和团队&#xff0c;所面对的挑战和不确定性不可避免。因此&#xff0c;以下是我给您的一些关于如何在职场中成功发展的建议&#xff1a; 1. 了解公司的文化和价值观 您的公司有什么核心的价值观和文化&#xff1f;这是您要了解和遵…

运营-8.内容分发

内容分发本质要解决的问题包含两点&#xff1a; 1.高效的连接人与信息 2.过滤出有价值的信息&#xff0c;让合适的人看到合适的信息。 常见的内容分发方式 1.编辑分发 2.订阅分发 3.社交分发 4.算法分发 TIPS&#xff1a;根据产品性质、技术实力等因素&#xff0c;不同…

【操作系统】从操作系统底层出发,成为更好的程序员

冯老爷子的模型 首先&#xff0c;我们从一个问题开始(&#xffe3;∇&#xffe3;)/ 为什么需要程序员&#xff1f; 早期的计算机程序是硬件化的&#xff0c;即使用各种门电路组装出一个固定的电路板&#xff0c;这个电路板只能用于执行某个特定的程序&#xff0c;如果需要修…

【C++】哈希

一、unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 l o g 2 N log_2 N log2​N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。 …