Springmvc简介及配置

1. 什么是springMVC?

Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。

2. SpringMVC处理请求的流程

2.1 首先用户发送请求-->DispatherServlet

2.2 DispatcherServlet-->HandlerMapping

2.3 DispatcherServlet-->HandlerAdapter

2.4 HandlerAdapter-->处理器功能处理方法的调用

2.5 ModelAndView的逻辑视图名-->ViewRecolver

2.6 View-->渲染

2.7 返回控制权给DispatcherServlet,由DispatcherServlet返回呼应给用户,流程结束

3. SpringMVC核心开发步骤

3.1 DispatcherServlet在web.xml中的部署描述,从而拦截请求到springMVC

3.2 HandlerMapping的配置,从而将请求映射到处理器

3.3 HandlerAdapter的配置,从而支持多种类型的处理器

3.4 处理器(页面控制器)的配置,从而刊行功能处理

3.5 ViewResolver的配置,从而将逻辑视图名解析为具体的视图技术

4. SpringMVC的组件

4.1 前端控制器(DispatcherServlet)

4.2 请求到处理器映射(HandlerMapping)

4.3 处理器适配器(HandlerAdapter)

4.4 视图解析器(ViewResolver)

4.5 处理器或页面控制器(Controller)

4.6 验证器(Validator)

4.6 命令对象(Command 请求参数绑定到的对象就叫命令对象)

4.7 表单对象(Form Object提供给表单展示和提交到的对象就叫表单对象)

5. 如何在项目中添加springmvc

5.1 添加相关依赖

 <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
      </dependency>

<!-- ********************** JSTL依赖 ********************** -->

<!-- 缺少下面的这两个jar包会报java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config-->

<!-- 原因:org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包-->

<dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
      </dependency>
      <dependency>
          <groupId>taglibs</groupId>
          <artifactId>standard</artifactId>
          <version>1.1.</version>
      </dependency>

5.2 在WEB-INF下添加springmvc-servlet.xm

<?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" xmlns:aop="http://www.springframework.org/schema/aop"
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-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 通过context:component-scan元素扫描指定包下的控制器-->
<!--) 扫描com.javaxl.zf及子子孙孙包下的控制器(扫描范围过大,耗时)-->
<aop:aspectj-autoproxy/>
<context:component-scan base-package="com.zhuling"/> <!--) 此标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
<!--两个bean,这两个bean是spring MVC为@Controllers分发请求所必须的。并提供了数据绑定支持,-->
<!--@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)-->
<mvc:annotation-driven></mvc:annotation-driven> <!--) ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- viewClass需要在pom中引入两个包:standard.jar and jstl.jar -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean> <!--) 单独处理图片、样式、js等资源 -->
<!--<mvc:resources location="/css/" mapping="/css/**"/>-->
<!-- <mvc:resources location="/images/" mapping="/images/**"/>-->
<!-- <mvc:resources location="/static/" mapping="/static/**"/>-->
<mvc:resources location="/static/" mapping="/static/**"/> </beans>

5.3 修改web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name> <welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 读取Spring上下文的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring和web项目集成end --> <!-- 防止Spring内存溢出监听器 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener> <!-- 中文乱码处理 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!--web.xml .0的新特性,是否支持异步-->
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--此参数可以不配置,默认值为:/WEB-INF/springmvc-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<!--web.xml 3.0的新特性,是否支持异步-->
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

Springmvc之helloword实现

6. 第一个springMVC程序:HelloWorld

package com.zhuling.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap;
import java.util.Map; /**
* @author zhuling
* @site www.xiaomage.com
* @company xxx公司
* @create  2019-10-25 14:58
*
* 5中情况
* 1、转发到页面
* 2、转发到根路径下的页面
* 3、转发到requestMapping下
* 4、重定向dao根路径下的页面
* 5、重定向到requestmapping下
*/
@Controller
public class helloController {
@ResponseBody
@RequestMapping("/hello1")
public String hello1() {
System.out.println("hello springmvs 你大爷");
return "hello springmvs 你大爷";
} @RequestMapping("/hello2")
public String hello2() {
System.out.println("hello2 springmvs 你大爷");
return "hello";
} @ResponseBody
@RequestMapping("/hello3")
public Map hello3() {
System.out.println("hello springmvs 你大爷");
Map map=new HashMap();
map.put("total",);
map.put("rows","一串的数据");
return map;
}
}

Springmvc常用注解及返回值处理

通过crud进行讲解

Controller

Requestmapping

Requestparam

传参

BookController

package com.zhuling.controller;

import com.zhuling.model.Book;
import com.zhuling.service.BookService;
import com.zhuling.util.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletRequest;
import java.util.List; /**
* @author zhuling
* @site www.xiaomage.com
* @company xxx公司
* @create  2019-10-25 16:47
*/
@Controller
@RequestMapping("/book")
public class BookController { @Autowired
private BookService bookService; @RequestMapping("/list")
public String list(Book book,HttpServletRequest req){
PageBean pageBean=new PageBean();
pageBean.setRequest(req);
List<Book> books = this.bookService.listPager1(book,pageBean);
req.setAttribute("bookList",books);
req.setAttribute("pageBean",pageBean);
return "bookList";
}
@RequestMapping("/preSave")
public String preSave(Book book,HttpServletRequest req){
if(book !=null && book.getBid() !=null && book.getBid() !=){
Book b = this.bookService.selectByPrimaryKey(book.getBid());
req.setAttribute("book2" ,b);
}
return "bookEdit";
}
@RequestMapping("/add")
public String add(Book book,HttpServletRequest req){
System.out.println(book);
this.bookService.insertSelective(book);
return "redirect:/book/list";
}
@RequestMapping("/edit")
public String edit(Book book,HttpServletRequest req){
this.bookService.updateByPrimaryKeySelective(book);
return "redirect:/book/list";
} @RequestMapping("/del")
public String del(@RequestParam int bid){
this.bookService.deleteByPrimaryKey(bid);
return "redirect:/book/list";
} }

Springmvc静态资源处理

结果集的五种处理

package com.zhuling.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap;
import java.util.Map; /**
* @author zhuling
* @site www.xiaomage.com
* @company xxx公司
* @create  2019-10-25 14:58
*
* 5中情况
* 1、转发到页面
* 2、转发到根路径下的页面
* 3、转发到requestMapping下
* 4、重定向dao根路径下的页面
* 5、重定向到requestmapping下
*/
@Controller
public class helloController { //1、转发到页面
@RequestMapping("/forward1")
public String forward1(){
System.out.println("进来forward");
return "aaa";
}
//* 2、转发到根路径下的页面
@RequestMapping("/forward2")
public String forward2(){ return "forward:/bbb.jsp";
}
// * 3、转发到requestMapping下
@RequestMapping("/forward3")
public String forward3(){ return "forward:/forward1";
}
// * 4、重定向dao根路径下的页面
@RequestMapping("/redirect1")
public String redirect1(){ return "redirect:/bbb.jsp";
}
// * 5、重定向到requestmapping下
@RequestMapping("/redirect2")
public String redirect2(){ return "redirect:/forward1";
} }

静态资源处理

找一张图片放入

SpingMVC入门的更多相关文章

  1. Spring3+SpingMVC+Hibernate4全注解环境配置

    Spring3+SpingMVC+Hibernate4全注解环境配置 我没有使用maven,直接使用Eclipse创建动态Web项目,jar包复制在了lib下.这样做导致我马上概述的项目既依赖Ecli ...

  2. SpringBoot从入门到精通一(idea优雅搭建SpringBoot项目)

    前言 在没有SpringBoot之前,我们搭建的是SSM(SpingMVC+Spring+Mybatis)项目,在搭建SSM项目的时候,我们要经过一系列的繁琐配置,例如:application,web ...

  3. 0021SpringMVC环境搭建及入门程序编写

    环境搭建: 1.创建项目 创建maven项目,勾选上Create from archetype,然后选中webapp再点击下一步,如下图: 解决项目创建过慢问题: 在创建maven项目过程中加入一组键 ...

  4. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  5. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  6. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  7. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  8. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  9. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

随机推荐

  1. Lucene全文检索_分词_复杂搜索_中文分词器

    1 Lucene简介 Lucene是apache下的一个开源的全文检索引擎工具包. 1.1 全文检索(Full-text Search)  1.1.1 定义 全文检索就是先分词创建索引,再执行搜索的过 ...

  2. Foxmail7.2的账号密码的备份与恢复

    1:备份: 1.0 找到Foxmail7.2的安装的位置,例如我的就是 D:\Program Files\Foxmail 7.2; 然后在路径下找到Storage文件夹然后备份里边的内容; 邮箱账号备 ...

  3. 英特尔vPro博锐技术激活

    英特尔vPro博锐技术激活 参考: Intel官方Management Engine BIOS Extension (Intel®MEBX)手册:http://www.intel.com/conten ...

  4. 在函数作用域嵌套下使用this

    var myObj = {    specialFunction: function () {        console.log("specialFunction.");   ...

  5. 在nuxt项目中使用component组件

    编写组件页面 1.在components下新建一个新建组件页面,如下所示 2.新建完成之后初始页面的代码如下所示: 3.下面从element-ui上找一个顶部导航菜单写到组件页面. <el-me ...

  6. css垂直居中如何实现

    利用CSS3的transform:translate .center{ width:%; position: absolute; top: %; left: %; -moz-transform: tr ...

  7. dfs · leetcode-22.产生括号组?

    题面 Given n pairs of parentheses, write a function to generate all combinations of well-formed parent ...

  8. 还在用ABAP进行SAP产品的二次开发?来了解下这种全新的二次开发理念吧

    Jerry从2018年底至今,已经写了一系列关于SAP Kyma的文章,您可以移步到本文末尾获得这些文章的列表.Kyma是SAP开源的一个基于Kubernetes的云原生应用开发平台,能够允许SAP的 ...

  9. 初识cv

    验证码识别的一般套路: 灰度化.图像处理.二值化.选算法.训练.评估调整参数.预测,当然,我在这里二值化与处理的顺序换了一下,灵活处理哈 1 显示图片轮廓 img = cv2.Canny(img,25 ...

  10. Linux 01 LiunxvI命令大全

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...