Spring MVC入门讲解

   1、Springmvc是什么?前端

 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即便用了MVC架构模式的思想,java

web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助咱们简化开发,Spring Web MVC也是要简化咱们平常Web开发的。web

 

          

    2、Spring MVC 架构图:spring

        

1DispacherServlet前端控制器设计模式

 

负责用户请求和响应,是一个中央控制器(调度),调用HandlerMapping查找Handler,调用HandlerAdapter处理器适配器执行Handler,调用ViewResolver视图解析器去解析视图,有了DispacherServlet有利于框架扩展,减小了各各组件之间耦合性。spring-mvc

 

 

2HandlerMapping处理器映射器架构

 

负责查找Handler(经常使用action,经过xml配置方式或注解方式将Handler类和request请求Handler连接地址进行对应配置mvc

 

 

3HandlerAdapter处理器适配器app

 

Springmvc提供了不少种适配器,注解适配器支持注解开发、原始servlet适配器(HanderRequestAdapter)支持原始servlet的执行框架

 

负责执行Handler,适配器是按照必定的规则去执行Handler,调用Handler返回的结果是ModelAndViewModelAndViewModelview封装起来(模型数据和视图)

 

 

4ViewResolver视图解析器

 

负责进行视图解析,返回View,框架执行不少类型的ViewjstlViewpdfView。。。)

3、案列

咱们来撰写第一个入门小案列:

咱们首先要准备jar包,然而jar包的地址我已经给大家准备好了:http://pan.baidu.com/s/1eRAaG2A

接下来咱们把项目搭建起来:

而后咱们编写web.xml文件,在这个文件的<web-app>节点下添加以下代码:

  <servlet>
      <servlet-name>spring</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
      <servlet-name>spring</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

这几行代码中,servlet节点的servlet-name是你springMVC配置文件的名字,而配置文件这样命名:servletName-servlet.xml

<url-pattern>/</url-pattern>表明分发全部请求!
而后咱们在去配置SpringMVC的配置文件具体代码以下:

<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    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
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="org.springframework.samples.petclinic.web"/>
	<!-- 这行代码表明的是用哪一个URL地址,访问哪一个类! name就是URL class就是你输入这个URL地址后要访问的类  -->
	<bean name="/first" class="cn.happy.controller.Login" /> -->
	<!-- 视图解析器:负责进行视图解析,返回View -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!--
		 前缀(prefix)和后缀(suffix),和咱们返回的View组合,进而找到一个屋里视图! 
		组合后的形式:http://localhost:8080/项目名/WEB-INF/jsp/View名.jsp
		-->
		<property name="prefix" value="/WEB-INF/jsp/"  />
		<property name="suffix" value=".jsp"  />
	</bean>
</beans>

 咱们写完SpringMVC的配置文件以后,就该去编写类了:

package cn.happy.controller;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class Login extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		//咱们来打印一句话,而后返回一个视图名
		System.out.println("Hello,Spring MVC!");
		return new ModelAndView("success");
	}
}

而后咱们返回去编写WEB-INF->jsp->success.jsp页面

        

成功页面:

 上面是咱们的第一种方式,第二种方式是是用注解的方式来实现,咱们接下来改一下咱们的配置文件,在文件里
添加两行代码:
<context:component-scan base-package="cn.happy.controller" />
<mvc:annotation-driven/>
第一行代码的意思是类在哪一个包下,第二行代码是扫描我这个包下的全部类,接下来咱们编写咱们Hellocontroller类:
package cn.happy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;


//这个注解是让咱们的类能够实现调度请求
@Controller
public class HelloController {
	
	//这个注解是咱们访问时候的URL地址
	@RequestMapping(value="/hello")
	public String hello(String name){
		//方法中的name参数是能够被SpringMVC自动装配的,
		System.out.println("经过非注解模式");
		return "success";
	}
}

 

到这里咱们的SpringMVC入门小案例已经写完了,各位大大看完记得点赞哦!
相关文章
相关标签/搜索