SpringMvc初入门(带完整入门项目)

【SpringMVC】上篇,超详细的教程带你学会SpringMVC SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。SpringMVC是处于Web层的框架,所以其主要的作用就是用来接收前端发过来的请求和数据然后经过处理并将处理的结果响应给前端,所以如何处理请求和响应是SpringMVC中非常重要的一块内容。这篇文章我将带领大家一起学习。 阅读详情

最近闲暇之余,感觉很久没有写博客了, 以前都是写一些算法, 今天打算写一下SpringMvc.   总的来说Mvc也算是一种设计模式,  不仅仅是Java, 前端js, 数据库。 也可以采用这种模式来达到一个业务逻辑和页面显示通过控制器达到解耦的目的。 SpringMvc可以跟SpringIOC无缝对接, 比起struts2也有好的几点如下:

    第一:struts2 性能较低, 基本上在我的机子上跑速度比较慢, 主要我想是他自带的标签库,UI库。 在前端如此丰富的今天完全没有必要用struts2自带的标签库了。

   第二: SpringMvc是基于方法级切入的,struts是基于类切入的。相对于而言,Spring粒度更细。

   第三:struts2的入口是filter, 而Springmvc是servlet.

   第四:Spring所提供SpringSecurity这个权限框架也很不错。 当然我并没有在struts2上做过多个深入, 估计也有这种框架。


首先我假定你已经对Spring这个框架有一定的了解,但是没有也没关系。

首先我们介绍的是SpringMvc的核心。 DispatcherServlet, 这个Servlet充当SpringMvc的前端控制器主要用作职责调度工作 ,也就是一个流程的控制。他得在web.xml中进行配置。

<servlet>  
        <servlet-name>xxx</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<load-on-startup>1<load-on-startup> 
<servlet>

其中servlet-name 这个属性蛮重要,在默认的情况下,DispatcherServlet会加载从一个基于这个Servlet名字的xml文件中

加载Spring应用的上下文。  比如上面的例子, DispatcherServlet会加载xxx-servlet这个文件,这个xml文件一般是写在你的

Tomcat的WEB-INF目录下面。


接着我们必须声明DispatcherServlet要处理的URL(*,htm /* /app)等等, 这个也是写在你的web,xml中的, 如:

 

 <servlet-mapping>  
        <servlet-name>zd_web</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  
 url-pattern 就是你要处理的URL, 我这里加上 "/" 意思是处理所有的URL。 (你也可以在Spring中配置<mvc:resources>这个元素)


接着我们可以指定DispatcherServlet将请求发送给哪个控制器。   所有的请求都要通过DispatcherServlet,然后再由它进行分发, 一般我们将请求发送到HanderMapping上面,那什么是HanderMapping呢,HanderMapping的就是为每个请求找到合适的处理器handler. 那什么是handler呢, 通俗点讲就是标注了@RequestMapping的方法。

 那么我们怎么确定控制器呢, 在通俗点讲就是在类上面标注@Controller注解进行装饰的class。  这个我在网络上找了一张图:

首先,当前端的请求到达的时候, 我们根据我们所编写的请求类进行处理, 这个类必须打上@controller这个注解,以表示它是一个控制器类, 接着我们可以在这个类的方法

里面打上@RequestMapping对请求进行装饰。

   好的,首先我们先不管那么多概念, 心中得有一个流程的模型, 俗话说,代码能跑起来在想优化的事情。   那么知道这几个概念后,我们可以开始跑一跑这个小项目了,

首先定义一个表单类, 他用javaScript进行GET方式的提交:

             我们把这个jsp页面的名字叫做logins.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Add User</title>  
  
  
<script type="text/javascript">  
    //添加用户  
    function addUser() {  
        var form = document.forms[0];  
        form.action = "${pageContext.request.contextPath}/logins";  
        
        form.method = "get";  
        form.submit();  
    }  
</script>  
  
</head>  
<body>  
    <form>  
        <table>  
            <tr>  
                <td>账号</td>  
                <td>  
                    <input type="text" name="userName">  
                </td>  
            </tr>  
            <tr>  
                <td>密码</td>  
                <td>  
                    <input type="password" name="password">  
                </td>  
            </tr>  
            <tr>  
                <td> </td>  
                <td>  
                    <input type="button" value="提交" onclick="addUser()">  
                </td>  
            </tr>  
        </table>  
    </form>  
</body>  
</html>

接着我们在写控制器 定义一个包名字为login, 因为我上面通过JS的from.submit()提交了表单。 这个控制器类的名字叫LoginContller

package login;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class LoginController {

	
	@RequestMapping(path="/logins",method=RequestMethod.GET)
	public String login(LoginBean loginBean) {
		 System.out.println(loginBean.getuserName());
		 System.out.println(loginBean.getPassword());
		 
		 return "logins";
	}
	 
}
其中path 是URI名称, 也就是你输入地址 http://locathost:"加上你的项目名"/logins/

接着我们在写一个Bean,接受请求的参数,UserName和PassWrod,他的名字是loginBean

package login;

import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Length;

public class LoginBean {

	
	  private  String userName;
	  
	  private  String Password;
	  

	public String getuserName() {
		return userName;
	}

	public void setuserName(@Size(min=4,max=15,message="账号要满足4-15个字符")String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return Password;
	}

	public void setPassword(@Length(min=6,max=15,message="密码要满足6-15个字符")String password) {
		Password = password;
	}
	  
	  

}
其中Size和Length是JSR的数据效验,这个大家可以忽略或者去掉。

接着web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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" id="WebApp_ID" version="2.5">

<display-name>zd_web</display-name>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
  
   <!--  
    	<listener>  
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
        </listener>  
  -->
      <servlet>  
        <servlet-name>zd_web</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        
     <init-param>
          <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/zd_web-servlet.xml</param-value> 
      </init-param>  
    <load-on-startup>1</load-on-startup> 
        
        
    </servlet> 
	
    
    <servlet-mapping>  
        <servlet-name>zd_web</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  


</web-app>

其中zd_web是我在写的一个Erp名字叫zd_web 这个大家可以换做你自己的项目名。或者也写成这样。(需要注释掉listener如果知道IOC的应该想得到,没学的可以直接注释)


 接着是Spring的配置文件, 名字为:zd_web-servlet(同上zd_web名字可以改成你的项目名):

 

context:component-scan base-package="login"/>
<!-- <context:component-scan base-package="login_Verify_picture"/> -->
 
    <!-- 启用spring mvc 注解 -->
    <context:annotation-config />

   <mvc:default-servlet-handler /> 
 
  <!-- 完成请求和POJO映射 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <mvc:annotation-driven />
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            id="internalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>

其中 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdaper 就是我们的视图控制器了, 他通过
<property name="prefix" value=
提供你具体的返回视图, 在哪里返回呢? 看上面的打上了@Controller的类中打上了@RequestMapping的那个方法, 他的return, 他return的就是具体的视图, 我们通过

在配置文件中配置视图的位置, 前缀比如说这个视图在WEB-INF目录下的jsp目录下, 后缀就是他以.jsp页面结尾的后缀。 当然视图还有多种方法, 这里我给出的是最简单暴力的方法。 

 那么整个入门项目貌似就完成了,下面我给出在我机子上面的运行截图:

 





 


最近很忙,所以写的很不好, 望各位多加指正, 关于Spring的其他(对REST的支持,权限框架, 事务管理, IOC容器)。 我会等有空后跟大家分享。对于书籍,

Spring in action 和Spring3.0x企业实战 这2本书我觉得很好呢。 嘿嘿

 






 

SpringMVC快速入门第一讲——SpringMVC介绍与入门 SpringMVC介绍SpringMVC是什么?SpringMVC和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来: SpringMVC处理流程SpringMVC处理流程如下图所示: 这个图大致描述了SpringMVC的整个处理流程,乍一看有点晕乎,且待我一步步分析,最后弄个流程图出来就明白了。SpringMVC入门程序本系列教程使 阅读详情

相关推荐

使用IDEA搭建Springmvc入门项目

在正是开始之前,先谈谈自己遇到的一些些坑: 最初因为自己只做过JSP项目,也就是使用eclipse搭建Dynamic Web Project项目,然后最近又要开发一个网站,心想还是学个框架吧。 最初决定的就是前后端分离开发,前端是vuejs的webpack框架加上Java的springmvc框架去做,而springmvc搜了一些教程都是用的IDEA去做,然而我又搜了一下也有用eclipse的,不...

qq_35885429的博客 1296

SpringMVC项目入门案例

SpringMVC入门案例。SpringMVC的制作过程具体的实现流程是什么?1.创建web工程(Maven结构);2.设置tomcat服务器,加载web工程(tomcat插件);3.导入坐标(SpringMVC+Servlet);4.定义处理请求的功能类(UserController);5.设置请求映射(配置映射关系);6.将SpringMVC设定加载到Tomcat容器中。

时代各有不同,青春一脉相承。 322

从原理图到GDSII:Virtuoso+Pcell实战避坑指南(以TSMC65nm振荡器为例)

本文以TSMC65nm工艺下的振荡器设计为例,详细解析了Virtuoso环境中Pcell的最佳实践方案,涵盖变量管理、版图设计、Calibre验证等关键环节。通过实战案例和避坑指南,帮助工程师高效完成从原理图到GDSII的转化,特别针对LVS验证和参数化单元设计提供了实用解决方案。

fff88的博客 901

SpringMVC 学习(二)之第一个 SpringMVC 案例

一个 SpringMVC 简单案例

zjs246813的博客 1333

Android/AutoMotive 多用户文件操作与权限管理

本文深入探讨了Android/Automotive多用户系统的文件操作与权限管理机制。文章阐述了多用户隔离与共享的核心原理,重点介绍了如何使用adb指令精准管理不同用户的应用与数据,并提供了在Android Automotive车载场景下实现安全跨用户数据共享与权限控制的最佳实践。

weixin_29214691的博客 163

基于Ultralytics RT-DETR的工业缺陷检测实战:从NEU-DET数据集准备到模型部署

本文详细介绍了基于Ultralytics框架和RT-DETR模型进行工业缺陷检测的完整实战流程。内容涵盖从NEU-DET数据集准备、YOLO格式转换、环境配置,到模型训练、关键参数调优、性能验证与可视化分析,最后提供了ONNX等格式的模型部署方案,为工业质检场景提供了一套高效、可落地的AI解决方案。

weixin_29168393的博客 341

springmvc详解

原文 目录 P1、前言 1、回顾MVC 1.1、什么是MVC 1.2、Model1时代 1.3、Model2时代 1.4、回顾Servlet 2、什么是SpringMVC 2.1、概述 2.2、中心控制器 2.3、SpringMVC执行原理 P2、第一个MVC程序 1、 配置版 2、 注解版 3、小结 P3、RestFul和控制器 1、控制器Controller 2、实现Controller接口 3、使用注解@Controller 4、RequestMapping 5、

ss810540895的博客 2万+

Claude Code 接入 DeepSeek-V4 教程

本文介绍Claude Code的安装配置流程:1) 安装Node.js 18+和Git(Windows);2) 通过npm全局安装@anthropic-ai/claude-code;3) 配置DeepSeek API环境变量(需替换API Key);4) 启动Claude Code或配置VSCode插件。重点包括Linux/macOS和Windows的环境变量设置方法,以及VSCode插件的settings.json配置项。完成配置后即可在终端或VSCode中使用Claude Code功能。

培根芝士的专栏 2012

【框架篇】Spring MVC 介绍及使用(详细教程)

Spring MVC是Spring框架提供的基于MVC架构并继承了Servlet API的Web开发框架。它遵循MVC模式的原则,提供了一套完整的开发流程和特性。通过Spring框架的支持,它能够实现灵活性、可配置性和可扩展性,帮助开发者构建高性能的Web应用程序。

小杨的博客 6万+

Autosar中CAN信号传输的模块化解析与实战应用

本文深入解析了AUTOSAR架构下CAN信号传输的模块化流程,详细阐述了从应用层软件组件(SWC)到COM模块打包、PduR路由、CanIf硬件抽象直至Can Driver驱动的完整“流水线”。文章通过实战案例,重点说明了模块化设计如何实现解耦与可移植性,并提供了关键模块配置要点与调试技巧,旨在帮助开发者构建高可靠、实时的车载通信系统。

g9h0i1的博客 902

Vue3 - 详细实现调用浏览器摄像头拍照并生成图片预览,支持将抓拍的图像保存到用户本地或上传到服务器、调取前置摄像头和后置摄像头,开启摄像头并进行拍照,vue实现调用摄像头,电脑或手机调用摄像头拍照

vue3,nuxt3,摄像头,vue3网站打开摄像头拍照,vue3项目调用摄像头实现拍照功能,拍照后怎么保存,照相后上传到后端服务器,开启摄像头黑屏,如何默认后置摄像头,网页开启电脑摄像头并照相,前置拍照,vue3如何调用手机摄像头进行拍摄,拒绝权限后不再弹出了,微信公众号网页,摄像头报错,拍照左右镜像反了,浏览器不兼容怎么办,vue3调用电脑端摄像头实时拍照,解决调用摄像头权限无法弹出,打不开摄像头,Vue3如何调用手机的摄像头,调用本地摄像头实现拍照,浏览器不弹摄像头权限了,如何不使用https运行测试

🏆 前端领域优质创作者 8654

SpringMVC(看这一篇就够了)

MVC全称Model View Controller,是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分:Model(模型):指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用中,JavaBean对象,业务模型等都属于Model。View(视图):用于展示模型中的数据的,一般为jsp或html文件。Controller(控制器):是应用程序中处理用户交互的部分。接受视图提出的请求,将数据交给模型处理,并将处理后的结果交给视图显示。 SpringMVC是一个基于MVC

m0_74436895的博客 3万+

PX4从放弃到精通(五):PX4中的姿态表示方法及转换关系

文章目录机体坐标系与地理坐标系一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 机体坐标系与地理坐标系 在实际应用中,加速度计的测量轴是由运动平台安装固定此器件的轴向决定的。这些坐标轴就形成了载体坐标系,定义如下: 坐标原点设在载体质心(这样可简化运动方程的推导); y轴指向载体前方,称为横滚轴,横滚角以y轴为起始旋转轴而得到,符合右手定则; x轴与y轴夹角90°,指向载体横向,称为俯仰轴,俯仰角以x轴为起始旋转轴而得到,符合右手定则; z轴与x轴、y轴构成右手笛卡儿坐标系,指向载体垂直方向

超维空间科技的博客 8116

【SpringMVC】| SpringMVC 入门

【SpringMVC】| SpringMVC 入门

m0_61933976的博客 4112

ROS与Qt5人机交互界面开发:添加rviz显示界面

最后,点击"完成"以创建新的Qt5应用程序项目。通过结合ROS和Qt5,您可以创建强大的人机交互界面,以实现丰富的机器人控制和数据可视化。在本教程中,我们将在主窗口中创建一个简单的按钮,用于启动rviz显示界面。在Qt Creator的槽函数编辑器中,为按钮添加一个槽函数,该函数将在单击按钮时调用。在上面的代码中,我们使用QProcess类启动了一个新的进程,并执行"rviz"命令来启动rviz显示界面。当您单击Qt5应用程序中的按钮时,将会启动一个新的rviz窗口,显示机器人数据的可视化界面。

CodeJolt的博客 2067

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringMVC初入门

第一个SprinfMVC项目 1.创建web项目 2.导包 基本包(4+1)+两个web包(web+webmvc) 3.配置web.xml 1)配置前端控制器 2)初始化spring配置文件 3)配置URL映射(需要拦截的URL) <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.o...

weixin_42168040的博客 180

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SpringMvc入门学习(IDEA创建SpringMVC项目)

1.创建项目(springmvc实际上是web项目) 2.项目命名 3. 在WEB-INF目录下建classes和lib等目录 4,编写处理器 package com.wxz; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * TODO * * @author wxz * @date 2..

weixin_42672802的博客 2535

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringMVC:入门案例

一次性工作创建工程,设置服务器,加载工程导入坐标创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器bean)多次工作定义处理请求的控制器类定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody)[声明]:内容主要来源黑马程序员网上资源学习。

qq_41187116的博客 1511

SpringMVC入门开发项目实例

项目环境 IDE:InteliJ IDEA 2019.2.4 Maven : version 3.6.3 Tomcat: version 9.0.22 第一步:打开IDE新建一个Maven项目,在GoupId填入公司网址写,或以com.开头的名称如com.test,ArtifactId填入项目名称如:SpringMVCTest,Version为默认值,Next,如下图: 第二步:在Maven h...

pkx0128的博客 2068

springMVC——入门项目,需要自己部署tomact

一,搭建开发的环境 1.1 新建一个maven项目: 如果亲还没有配置maven的话可以参考这个视频: 关于maven的搭建 在idea里搭建的时候会有许多的问题出现,但是这个视频里的内容差不多都能解决相应的问题,并且up主也提供有相应的maven安装资源,所以快行动吧!!!但是切记这个视频最好看两遍也可以更多,看一遍跟着配置会有你想不到的许多错误。 项目名称:springmvc...

49天的博客 435

SpringMVC:从入门到精通,7篇系列篇带你全面掌握--一.SpringMVC的工作流程【内附完整流程图】

SpringMVC是啥,它有什么特点,SpringMVC究竟是如何运行的。如果你也有这些疑问的话,那么这篇定能助你!!!!

m0_74315688的博客 3736

SpringMvc入门项目搭建-XML配置方式

在“src”下新建包“com.SpringMvc.controller”(controller前也可以写其他,但在配置spring-web.xml中扫描包的路径需要更改),包下新建控制器类“HelloController”在web.xml中配置“DispatcherServlet”(接收所有用户请求,并将其分派给相应的Controller来处理)和过滤器(用于将请求和响应进行编码,以免中文乱码)Controller(控制器):根据视图请求调用Model完成业务处理,将处理后的结果交由View进行展示。

m0_71494074的博客 1548

【SpringMVC】入门篇:带你了解SpringMVC的执行流程

我们在前边已经学习了Spring的基本使用。从这节开始,我们进行SpringMVC的学习。在学习之前,我们首先得搞清楚SpringMVC是个什么东西?它可以用来干什么?SpringMVC就是一个Spring内置的MVC框架。它是基于SpringFrame的web层框架。我们可以简单理解为它可以将我们原来的Controller进行接管,相较于我们javaWeb部分学习的Servlet,需要继承Servlet实现类的这种方式,在SpringMVC中我们只需要用一个注解就可以完成。

喃灬疯的博客 822

idea创建springMVC入门项目

这里使用idea创建springMVC入门项目这里记录一下 1.创建项目选择配置: 2.反之加载过慢的配置(命名配置自己定义,省略了): 3.直接将各个配置和测试类展示出来吧(Tomcat配置就不在这里赘述了) 目录(main模块下面也是新建了两个模块,然后转换成我们需要的类型): 转换方法介绍: pom.xml: <?xml version="1.0" en...

兔的骄傲 249

【SpringMVC】入门案例

SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。SpringMVC简介请求与响应REST风格SSM整合(注解版)拦截器SpringMVC是处于Web层的框架,所以其主要的作用就是用来接收前端发过来的请求和数据然后经过处理并将处理的结果响应给前端,所以如何处理请求和响应是SpringMVC中非常重要的一块内容。REST是一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性,后期的应用也是非常广泛。

Javascript_tsj的博客 1214

SpringMVC项目入门

如果 Eclipse 仍然无法识别 Spring 的 XML Schema 文件,你可以通过手动下载这些文件,并在 Eclipse 中进行相应的配置来解决问题。在出现的对话框中,为新的条目提供一个描述性的名称,然后指定 XSD 文件的路径。如果 Eclipse 仍然无法识别 Spring 的 XML Schema 文件,你可以手动下载这些文件,并配置给 Eclipse 使用。如果你之前是通过网络引用 XSD 文件的,但现在选择手动下载并使用本地文件,确保你已经在 XML 配置文件中更新了。

weixin_74314406的博客 1038
上一篇: 设计模式: 简单工厂, 工厂方法, 和抽象工厂总结
下一篇: SpringMvc实现文件上传
zh_coder
博客等级 码龄12年 31粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值