zoukankan      html  css  js  c++  java
  • springmvc入门(1)

    一.、springmvc框架
    1、什么是springmvc
    springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。springmvc是一个基于mvc的web框架。
    2、mvc在b/s系统下的应用
     mvc是一个设计模式,mvc在b/s系统 下的应用:
    3、springmvc框架
    第一步:发起请求到前端控制器(DispatcherServlet)
    第二步:前端控制器请求HandlerMapping查找 Handler
             可以根据xml配置、注解进行查找
    第三步:处理器映射器HandlerMapping向前端控制器返回Handler
    第四步:前端控制器调用处理器适配器去执行Handler
    第五步:处理器适配器去执行Handler
    第六步:Handler执行完成给适配器返回ModelAndView
    第七步:处理器适配器向前端控制器返回ModelAndView
             ModelAndView是springmvc框架的一个底层对象,包括 Model和view
    第八步:前端控制器请求视图解析器去进行视图解析
             根据逻辑视图名解析成真正的视图(jsp)
    第九步:视图解析器向前端控制器返回View
    第十步:前端控制器进行视图渲染
             视图渲染将模型数据(在ModelAndView对象中)填充到request域
    第十一步:前端控制器向用户响应结果
     
    4、组件:
    前端控制器DispatcherServlet(不需要程序员开发)。作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。
    处理器映射器HandlerMapping(不需要程序员开发)。作用:根据请求的url查找Handler
    处理器适配器HandlerAdapter。作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
    处理器controller(需要程序员开发)注意:编写controller时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler 
    视图解析器View resolver(不需要程序员开发)。作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
    视图View(需要程序员开发jsp)。View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)
     
    二、程序入门
    1. 配置前端控制器,在web.xml中配置前端控制器
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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">
     3   <display-name>springmvc</display-name>
     4   
     5   <!-- springmvc前端控制器 -->
     6   <servlet>
     7       <servlet-name>springmvc</servlet-name>
     8       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     9       <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等)
    10       如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-serlvet.xml(springmvc-servlet.xml)
    11        -->
    12       <init-param>
    13           <param-name>contextConfigLocation</param-name>
    14           <param-value>classpath:springmvc.xml</param-value>
    15       </init-param>
    16   </servlet>
    17   
    18   <servlet-mapping>
    19       <servlet-name>springmvc</servlet-name>
    20       <!-- 
    21       第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析
    22       第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析
    23       使用此种方式可以实现 RESTful风格的url
    24       第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,
    25       仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错。
    26        -->
    27       <url-pattern>*.action</url-pattern>
    28   </servlet-mapping>
    29   
    30   
    31   <welcome-file-list>
    32     <welcome-file>index.html</welcome-file>
    33     <welcome-file>index.htm</welcome-file>
    34     <welcome-file>index.jsp</welcome-file>
    35     <welcome-file>default.html</welcome-file>
    36     <welcome-file>default.htm</welcome-file>
    37     <welcome-file>default.jsp</welcome-file>
    38   </welcome-file-list>
    39 </web-app>
    View Code

    2、配置处理器适配器,在classpath下的springmvc.xml中配置处理器适配器。

    1 <!-- 处理器适配器 所有处理器适配器都实现 HandlerAdapter接口 -->
    2     <bean  class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    View Code

    3、开发controller程序,这里使用的是静态数据。下一篇和mybatis整合后将去数据库查询数据

     1 package com.zhang.controller;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 
     9 import org.springframework.web.servlet.ModelAndView;
    10 import org.springframework.web.servlet.mvc.Controller;
    11 
    12 import com.zhang.domain.Items;
    13 
    14 public class ItemsController implements Controller {
    15     @Override
    16     public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {
    17         //调用service查找 数据库,查询商品列表,这里使用静态数据模拟
    18         List<Items> itemsList = new ArrayList<Items>();
    19         //向list中填充静态数据
    20         Items items_1 = new Items();
    21         items_1.setName("联想笔记本");
    22         items_1.setPrice(6000f);
    23         items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
    24         Items items_2 = new Items();
    25         items_2.setName("苹果手机");
    26         items_2.setPrice(5000f);
    27         items_2.setDetail("iphone6苹果手机!");
    28         itemsList.add(items_1);
    29         itemsList.add(items_2);
    30         //返回ModelAndView
    31         ModelAndView modelAndView =  new ModelAndView();
    32         //相当 于request的setAttribut,在jsp页面中通过itemsList取数据
    33         modelAndView.addObject("itemsList", itemsList);
    34         //指定视图
    35         modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
    36         return modelAndView;
    37     }
    38 
    39 }
    View Code

    4、配置处理器映射器,在classpath下的springmvc.xml中配置处理器映射器

    1 <!-- 配置Handler -->
    2     <bean id="itemsController" name="/queryItems_test.action" class="com.zhang.controller.ItemsController" />    
    3     <!-- 处理器映射器 将bean的name作为url进行查找 ,需要在配置Handler时指定beanname(就是url) 所有的映射器都实现 HandlerMapping接口。-->
    4     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    View Code

    5、配置视图解析器,需要配置解析jsp的视图解析器。

    1 <!-- 视图解析器解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包-->
    2     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
    View Code

    6、JSP页面

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     4 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     6 <html>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     9 <title>查询商品列表</title>
    10 </head>
    11 <body> 
    12 <form action="${pageContext.request.contextPath }/item/queryItem.action" method="post">
    13 查询条件:
    14 <table width="100%" border=1>
    15 <tr>
    16 <td><input type="submit" value="查询"/></td>
    17 </tr>
    18 </table>
    19 商品列表:
    20 <table width="100%" border=1>
    21 <tr>
    22     <td>商品名称</td>
    23     <td>商品价格</td>
    24     <td>生产日期</td>
    25     <td>商品描述</td>
    26     <td>操作</td>
    27 </tr>
    28 <c:forEach items="${itemsList }" var="item">
    29 <tr>
    30     <td>${item.name }</td>
    31     <td>${item.price }</td>
    32     <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
    33     <td>${item.detail }</td>
    34     <td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改</a></td>
    35 </tr>
    36 </c:forEach>
    37 </table>
    38 </form>
    39 </body>
    40 </html>
    View Code

    7、测试,在浏览器中输入地址:http://127.0.0.1:8080/springmvc//queryItems_test.action,显示效果如下:

    三、工程目录结构:

    资源下载链接:http://download.csdn.net/detail/u013865056/9907602

  • 相关阅读:
    WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递 【转】
    Web API的发布问题
    WCF、WebAPI、WCFREST、WebService之间的区别【转】
    讲给普通人听的分布式数据存储【转载】
    c#开发的程序安装时动态指定windows服务名称
    动态调用WCF服务
    服务端增加WCF服务全局异常处理机制
    生成窗口最大数组
    用栈来求解汉诺塔问题
    使用MockMvc测试Spring mvc Controller
  • 原文地址:https://www.cnblogs.com/zhangjinru123/p/7223125.html
Copyright © 2011-2022 走看看