码迷,mamicode.com
首页 > 编程语言 > 详细

springmvc入门(1)

时间:2017-07-22 23:40:48      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:javaee   charset   图解   pdf   index.jsp   schema   根据   main   extc   

一.、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,显示效果如下:

技术分享

三、工程目录结构:

技术分享

资源下载链接:

 

springmvc入门(1)

标签:javaee   charset   图解   pdf   index.jsp   schema   根据   main   extc   

原文地址:http://www.cnblogs.com/zhangjinru123/p/7223125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!