SpringMVC学习笔记

SpringMVC学习笔记

SpringMVC概述

SpringMVC 也叫 Spring web mvc。是 Spring内置的一个MVC框架,在 Spring3.0 后发布。SpringMVC

框架解决了WEB开发中常见的问题(参数接收、文件上传、表单验证等等),而且使用简单,与Spring无

缝集成。支持 RESTful风格的URL请求。采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性

和灵活性。

SpringMVC原理

在没有使用SpringMVC之前我们都是使用Servlet在做Web开发。但是使用Servlet开发在接收请求参数,

数据共享,页面跳转等操作相对比较复杂。servlet是java进行web开发的标准,既然springMVC是对

servlet的封装,那么很显然SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封

装。

SpringMVC优势

1、基于 MVC 架构,功能分工明确。解决页面代码和后台代码的分离。

2、简单易用。SpringMVC 也是轻量级的,jar 很小。不依赖的特定的接口和类就可以开发一个注解的

SpringMVC 项目。

3、作 为 Spring 框 架 一 部 分 , 能 够 使 用Spring的IoC和AOP 。 方 便 整 合MyBatis,Hiberate,JPA等

其他框架。

4、springMVC的注解强大易用。

MVC模式回顾

模型1:jsp+javabean模型—在jsp页面中嵌入大量的java代码

模型2:jsp+servlet+javabean模型—jsp页面将请求发送给servlet,由servlet调用javabean,再由servlet将制定jsp页面响应给用户。

模型2一般就是现在的MVC模式,也是我们一直使用的。

Model-View-Controller:模型–视图–控制器

Model: 模型层 javaBean 负责数据访问和业务处理 dao service pojo

View: 视图 JSP技术 负责收集和展示数据

Controller: 控制器 servlet技术 中间调度

控制器的工作:

1、接受客户端的请求(包括请求中携带的数据)

2、处理请求:调用后台的模型层中的业务逻辑

3、页面导航:处理完毕给出响应:JSP页面

入门程序—步骤

1 创建maven项目

2 pom.xml文件添加依赖和插件

 <packaging>warpackaging> <dependencies>  <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webmvcartifactId> <version>5.2.13.RELEASEversion> dependency>  <dependency> <groupId>javax.servletgroupId> <artifactId>javax.servlet-apiartifactId> <version>4.0.1version> <scope>providedscope> dependency> dependencies> <build> <plugins> 
    <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-compiler-pluginartifactId> <version>3.8.0version> <configuration> <source>1.8source> <target>1.8target> configuration> plugin>  <plugin> <groupId>org.apache.tomcat.mavengroupId> <artifactId>tomcat7-maven-pluginartifactId> <version>2.2version> <configuration> <path>/path> <port>8080port> configuration> plugin> plugins> build>

3 创建Spring和SpringMVC的配置文件

我们一般将除了 Controller 之外的所有 Bean 注册到 Spring 容器中,而将 Controller 注册到

SpringMVC 容器中。所以我们在 resources 目录下添加 applicationContext.xml 作为 spring 的配置,

添加springmvc.xml作为springmvc的配置文件。

3.1创建Spring配置文件applicationContext.xml文件

 <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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">  <context:component-scan base-package="com.kkb.dao,com.kkb.service"/> beans>

3.2 创建SpringMVC的配置文件springmvc.xml

 <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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd ">  <context:component-scan base-package="com.kkb.controller"/> beans>

4 在web.xml中进行Spring和SpringMVC配置

 <context-param>  <param-name>contextConfigLocationparam-name>  <param-value>classpath:applicationContext.xmlparam-value> context-param> <listener> <listener- class>org.springframework.web.context.ContextLoaderListenerlistener-class> listener>   <servlet> <servlet-name>dispatcherServletservlet-name> <servlet- class>org.springframework.web.servlet.DispatcherServletservlet-class>  <init-param> <param-name>contextConfigLocationparam-name> <param-value>classpath:springmvc.xmlparam-value> init-param>  <load-on-startup>1load-on-startup> servlet>  <servlet-mapping>
    <servlet-name>dispatcherServletservlet-name> <url-pattern>*.dourl-pattern> servlet-mapping> 

5 创建控制器

package com.kkb.controller; import com.kkb.service.TeamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; /*** ClassName: TeamController ** @author wanglina * @version 1.0 */ @Controller public class TeamController { @Autowired private TeamService teamService; @RequestMapping("hello.do") public ModelAndView add(){ System.out.println("TeamController----add---"); teamService.add(); ModelAndView mv=new ModelAndView();mv.addObject("teamName","湖人");//相当于 request.setAttrubuite("teanName","湖人"); mv.setViewName("index");//未来经过springmvc的视图解析器处理,转换成物理资源路径, 相当于request.getRequestDispatcher("index.jsp").forward(); //经过InternalResourceViewResolver对象的处理之后加上前后缀就变为了 /jsp/index.jsp return mv; } }
package com.kkb.service; import org.springframework.stereotype.Service; @Service public class TeamService { public void add(){ System.out.println("TeamService---- add-----"); } }

6 配置视图解析器

在springmvc.xml配置文件中添加视图解析器的配置

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

7 编写index.jsp页面

webapp文件夹下面创建文件夹jsp,然后jsp文件夹中添加index.jsp页面

8 测试

9 解析

当 Spring 和 SpringMVC 同时出现,我们的项目中将存在两个容器,一个是 Spring 容器,另一个是SpringMVC 容器,Spring 容器通过 ContextLoaderListener 来加载,SpringMVC 容器则通过DispatcherServlet 来加载,这两个容器不一样

你可能感兴趣的:(Java学习笔记,java,springmvc)