springmvc-learn(一)简单介绍及运行流程说明

(一)简介

        springMvc:是一个表现层框架,

作用:就是从请求中接收传入的参数,  将处理后的结果数据返回给页面展示(废话。。)

(二)SpringMvc运行流程以及常用组件及作用

使用语言描述SpringMvc运行流程:

               (1)用户发送请求给前端控制器(DispacherServlet)。

        (2)再请求处理器映射器(HandlerMapping请求处理,返回处理器执行链,包含n个拦截器(HandlerInterceptor),通过拦截器之后返回给前端控制器(没通过 请求会被踢除),

              (3)再请求处理器适配器(HandlerAdapter进行处理controller根据请求内容选择不同适配器处理,返回Model(页面数据),View(到哪个页面)给处理器适配器,再返回给前端控制器。

               (4)前端控制器在请求视图解析器(ViewResolver进行处理(Jsp,PDf。。。)在最后形成Html返回给客户展示。(现在这属于动态网页,形成页面要代码走一圈,门户网站很多用Cms形成的静态网页,这个没有接触过。。。。。。)

插件作用:

                (1)视图解析器(ViewResolver):

               View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

                (2)处理器映射器(HandlerMapping):相当于Map,key为url,value相当于controller。

               负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

                (3)处理器适配器(HandlerAdapter):                   

               通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

                (4)前端控制器(DispacherServlet):                       

               用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

                (5)处理器(Handler):                     

                        Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

                (6)视图(View

                       springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等()。我们最常用的视图就是jsp。

(三)开发步骤

        (1)创建web,jar包,tomact。。。。。。。。。。。。。。。。。。。

        (2)创建Jsp页面

                代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>

<!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>查询商品列表</title>

</head>

<body> 

<form action="${pageContext.request.contextPath }/item/queryitem.action" method="post">

查询条件:

<table width="100%" border=1>

<tr>

<td><input type="submit" value="查询"/></td>

</tr>

</table>

商品列表:

<table width="100%" border=1>

<tr>

<td>商品名称</td>

<td>商品价格</td>

<td>生产日期</td>

<td>商品描述</td>

<td>操作</td>

</tr>

<c:forEach items="${itemList }" var="item">

<tr>

<td>${item.name }</td>

<td>${item.price }</td>

<td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>

<td>${item.detail }</td>

<td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>

</tr>

</c:forEach>

</table>

</form>

</body>

</html>


        (3)创建实体类.java

                代码:

public class Items {

    private Integer id;

    private String name;

    private Float price;

    private String pic;

    private Date createtime;

    private String detail;

    public Integer getId() {

        return id;

    }

    public void setId(Integer id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name == null ? null : name.trim();

    }

    public Float getPrice() {

        return price;

    }

    public void setPrice(Float price) {

        this.price = price;

    }

    public String getPic() {

        return pic;

    }

    public void setPic(String pic) {

        this.pic = pic == null ? null : pic.trim();

    }

    public Date getCreatetime() {

        return createtime;

    }

    public void setCreatetime(Date createtime) {

        this.createtime = createtime;

    }

    public String getDetail() {

        return detail;

    }

    public void setDetail(String detail) {

        this.detail = detail == null ? null : detail.trim();

    }

}

        (4)创建Controller.Java

              ItemController是一个普通的java类,不需要实现任何接口,只需要在类上添加@Controller注解即                           可。@RequestMapping注解指定请求的url,其中“.action”可以加也可以不加。在ModelAndView对象中,将视图设置           为“/WEB-INF/jsp/itemList.jsp

                代码:

@Controller

public class ItemsController {

//指定url到请求方法的映射

//url中输入一个地址,找到这个方法.例如:localhost:8081/springmvc0523/list.action

@RequestMapping("/list")

public ModelAndView  itemsList() throws Exception{

List<Items> itemList = new ArrayList<>();

//商品列表

Items items_1 = new Items();

items_1.setName("联想笔记本_3");

items_1.setPrice(6000f);

items_1.setDetail("ThinkPad T430 联想笔记本电脑!");

Items items_2 = new Items();

items_2.setName("苹果手机");

items_2.setPrice(5000f);

items_2.setDetail("iphone6苹果手机!");

itemList.add(items_1);

itemList.add(items_2);

//模型和视图

//model模型: 模型对象中存放了返回给页面的数据

//view视图: 视图对象中指定了返回的页面的位置

ModelAndView modelAndView = new ModelAndView();

//将返回给页面的数据放入模型和视图对象中

modelAndView.addObject("itemList", itemList);

//指定返回的页面位置

modelAndView.setViewName("itemList");

return modelAndView;

}

}


        (5)配置SpringMvc.xml

                代码:

<?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:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

        http://www.springframework.org/schema/mvc

        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd

        http://code.alibabatech.com/schema/dubbo

        http://code.alibabatech.com/schema/dubbo/dubbo.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context-4.0.xsd">

        

        <!-- 配置@Controller注解扫描 -->

        <context:component-scan base-package="cn.itheima.controller"></context:component-scan>

        

        <!-- 如果没有显示的配置处理器映射器和处理器适配那么springMvc会去默认的dispatcherServlet.properties中查找,

        对应的处理器映射器和处理器适配器去使用,这样每个请求都要扫描一次他的默认配置文件,效率非常低,会降低访问速度,所以要显示的配置处理器映射器和

        处理器适配器 -->

        

        <!-- 注解形式的处理器映射器 -->

<!--         <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean> -->

        <!-- 注解形式的处理器适配器 -->

<!--         <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean> -->

        

        <!-- 配置最新版的注解的处理器映射器 -->

<!--         <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> -->

        <!-- 配置最新版的注解的处理器适配器 -->

<!--         <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> -->

<!-- 注解驱动:

作用:替我们自动配置最新版的注解的处理器映射器和处理器适配器

 -->

<mvc:annotation-driven></mvc:annotation-driven>

<!-- 配置视图解析器

作用:controller中指定页面路径的时候就不用写页面的完整路径名称了,可以直接写页面去掉扩展名的名称

-->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!-- 真正的页面路径 =  前缀 + 去掉后缀名的页面名称 + 后缀 -->

<!-- 前缀 -->

<property name="prefix" value="/WEB-INF/jsp/"></property>

<!-- 后缀 -->

<property name="suffix" value=".jsp"></property>

</bean>

</beans>


         (6)配置web.xml   

                 web.xml中添加DispatcherServlet的配置。

                代码:

<?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>springmvc0523</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  

  <!-- spirngMvc前端控制器 -->

  <servlet>

  <servlet-name>spirngMvc0523</servlet-name>

  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  

  <!-- 如果没有指定springMvc核心配置文件那么默认会去找/WEB-INF/+<servlet-name>中的内容 +   -servlet.xml配置文件 -->

  <!-- 指定springMvc核心配置文件位置 -->

  <init-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>classpath:SpringMvc.xml</param-value>

  </init-param>

  

  <!-- tomcat启动的时候就加载这个servlet -->

  <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

  <servlet-name>spirngMvc0523</servlet-name>

  <url-pattern>*.action</url-pattern>

  </servlet-mapping>

</web-app>

 

运行效果:


猜你喜欢

转载自blog.csdn.net/qq_29153851/article/details/79337028