Springmvc 知识点+案例

来源:互联网 发布:天下游源码 编辑:程序博客网 时间:2024/06/01 10:26

1.Springmvc是什么

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

 


 

 

1DispacherServlet前端控制器

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

 

2HandlerMapping处理器映射器

不需要开发,使用框架提供的

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

3HandlerAdapter处理器适配器

不需要开发,使用框架提供的

Springmvc提供了很多种适配器,注解适配器支持注解开发、原始servlet适配器(HanderRequestAdapter)支持原始servlet的执行。

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

 

4ViewResolver视图解析器

不需要开发,使用框架提供的

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

 

5Handler处理器(需要开发)

需要开发,按照适配器的规则开发,比如适配器要求Handler实现某个接口,Handler必须实现接口。

 

6View视图页面(jsp)(需要开发)

需要开发,jsp+jstl。为了视图通用性建议使用第三方框架,jstl

 

处理器映射器、处理器适配器、视图解析器称为springmvc的三大件。


案例 1:首先我们看controller

我们需要是实现Controller接口,然后我们重写handleRequest方法  ,这个方法返回的值的ModelAndView  所有我 们需要创建一个ModelAndView返回返回他,

一个addObject属性 是可以在页面上传值的,第二个传的是路径。

public class FilstController implements Controller {    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {       ModelAndView mv=new ModelAndView();       mv.addObject("name","我是一个美丽的 小女孩");       mv.setViewName("index");        return mv;    }}

第二步我们看一下,web.xml按照基本 的步骤我们应该首先 配置 xml  实现前端控制器,最后一个大节点我们的是用来显示图片的 ,关于结尾 是.jpg的所有图片,

上面我们实现了DispatcherServlet,并且我们需要连接一个路径配置的xml  springmvc .xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app>  <display-name>Archetype Created Web Application</display-name>  <servlet>    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:springmvc02.xml</param-value>    </init-param>  <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>  <!--<servlet-mapping>    <servlet-name>default</servlet-name>    <url-pattern>*.jpg</url-pattern>  </servlet-mapping>--></web-app>


第三步我们看springmvc.xml..首先 前俩个是图片显示的另外2种方法,然后BeanNameUrlHandlerMapping这个没什么用 ,写不写可以。

下面是配置视图解析器的配置。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"               xmlns:aop="http://www.springframework.org/schema/aop"               xmlns:mvc="http://www.springframework.org/schema/mvc"               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"               xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--图片显示--><!--<mvc:default-servlet-handler/>--><mvc:resources  location="/img/" mapping="/img/**"></mvc:resources><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">      <!--         <property name="mappings">                 <props>                     <prop key="/hello.do">FilstController</prop>                     <prop key="/hehe.do">FilstController</prop>                 </props>             </property>     -->      <property name="urlMap">          <map>              <entry key="/hello.do" value="FilstController"></entry>              <entry key="/hehe.do" value="FilstController"></entry>          </map>      </property>    </bean>    <!--视图解析器-->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/"></property>        <property name="suffix" value=".jsp"></property>    </bean><bean id="FilstController" class="cn.happy.springmvc01.FilstController"></bean></beans>


接下来我们是显示 的页面。我们会在页面上显示图片 还有我们传过去的name值。

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><%    String path = request.getContextPath();    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html><head>    <title>哈哈</title></head><body><h1>我是SpringMVC,你成功了!!!</h1><img src="<%=path%>/img/5.jpg"/><h2>${name}</h2></body></html>


示例2和1无太大的差别

不过是  示例1实现了Controller接口,而示例2是继承了AbstractController,不过把它的配置文件的类换一下,

而且这和带请求的限定

如果你只写了一个post但是你浏览网页是Get请求的话,那是不可以的。没了 就这些了。


原创粉丝点击