您的位置:首页 > 编程语言 > Java开发

继续前进之SpringMvc入门小程序

2017-04-24 21:08 316 查看
SpringMvc到底是什么?学习它之前必须要先了解它

根据查询得知,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,MVC模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。

原理图



第一步:用户发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找

第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)

第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

第五步:处理器适配器去执行Handler

第六步:Handler执行完给处理器适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析

第九步:视图解析器像前端控制器返回View

第十步:前端控制器对视图进行渲染

第十一步:前端控制器向用户响应结果

这里包含了几大重要的组件:

前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。

处理器映射器(HandlerMapping):根据URL去查找处理器

处理器(Handler):(需要程序员去写代码处理逻辑的)

处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)

视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面

(文字步骤取自http://www.cnblogs.com/huaixiaoz/p/5776244.html

了解了原理,现在就按照这个思路写一个测试程序

第一步:jar包



编写一个po类

public class Items {

private String name;
private float price;
private String detail;
}


配置前端控制器(DispatchServlet)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name>
<servlet>
<!-- 配置前端控制器 -->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- contestConfigLocation配置springmvc加载配置文件(配置处理器、适配器等)这里我们在src目录下重新创建了一个xml文件,因为如果不配置contextConfigLocation,它会默认加载/WEB-INF/servlet名称-servlet.xml。 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<!--这里是对文件类型解析的约束-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


配置处理器映射器、处理器适配器、视图解析器

<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schem
4000
a/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> 
<!-- 将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url) -->
<bean name="/queryItems.action" class="com.itsky.ssm.controller.ItemsController01"></bean>

<!-- 处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!-- 处理器适配器-->
<!-- 所有的适配器都实现了HanderAdapter接口 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

<!--视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

</beans>


创建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>Insert title here</title>
</head>
<body>
<table width="100%" border=1>
<tr>
<td>商品名称</td>
<td>商品价格</td>
<td>生产日期</td>
<td>商品描述</td>
<td>操作</td>
</tr>
<c:forEach items="${itemsList }" var="item">
<tr>
<td>${item.name }</td>
<td>${item.price }</td>
<td>${item.createtime }</td>
<td>${item.detail }</td>
<td>${item.name }</td>
</tr>
</c:forEach>
</table>
</body>
</html>


创建一个ItemsController01类

“`

package com.itsky.ssm.controller;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

import com.itsky.ssm.po.Items;

public class ItemsController01 implements Controller{

public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//先用静态方法来模拟数据的查找
List<Items>itemsList=new ArrayList<Items>();
Items items_1=new Items();
items_1.setName("学习SpringMvc");
items_1.setPrice(6000f);
items_1.setDetail("快要入门了");

Items items_2=new Items();
items_2.setName("电脑");
items_2.setPrice(5000f);
items_2.setDetail("傻瓜电脑");
itemsList.add(items_1);
itemsList.add(items_2);

//返回ModelAndView
ModelAndView modelAndView=new ModelAndView();
//相当于request的setAttribute,在jsp页面通过itemsList读取数据
modelAndView.addObject("itemsList", itemsList);

//指定视图
modelAndView.setViewName("WEB-INF/jsp/items/items.jsp");

return modelAndView;
}


}

测试

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvc spring mvc