一、Handler开发   

     Handler的开发方式在springmvc中有多种,下面我们主要讲解三种实现方式:实现Controller接口、实现HttpRequestHandler接口、使用注解。

 

1.实现HttoRequestHandler接口

ItemsController1.java

/*
* Handler开发方式1: 实现HttpRequestHandler接口
*/
public class ItemsController1 implements HttpRequestHandler{ @Override
public void handleRequest(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
//模拟查询商品列表数据
List<Items> list = new ArrayList<Items>();
list.add(new Items("笔记本",6000f,new Date(),"联想笔记本值得信赖!!!"));
list.add(new Items("手机",3000f,new Date(),"支持国产手机!!!"));
list.add(new Items("背包",1000f,new Date(),"登山旅行必备!!!")); //将商品放置到request域中
req.setAttribute("itemsList",list); //指定指定的视图
req.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(req,resp);
}
}

 

配置handler

     在springmvc.xml配置文件中配置。

<!-- 配置实现HttpRequestHandler接口的处理器 -->
<bean name="/queryItems.do" class="com.kiwi.controller.ItemsController1" />

 

jsp页面

<c:forEach items="${itemsList }" 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 }/editItems.do?id=${item.id}">修改</a></td> </tr>
</c:forEach>

 

结果:

 

2.实现Controller接口

/*
* Handler开发方式2: 实现Controller接口
*/
public class ItemsController2 implements Controller{ @Override
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception{ ModelAndView mv = new ModelAndView();
// 模拟查询商品列表数据
List<Items> list = new ArrayList<Items>();
list.add(new Items("笔记本2",6000f,new Date(),"联想笔记本值得信赖!!!"));
list.add(new Items("手机2",3000f,new Date(),"支持国产手机!!!"));
list.add(new Items("背包2",1000f,new Date(),"登山旅行必备!!!")); mv.addObject("itemsList",list);
mv.setViewName("/items/itemsList"); return mv;
}
}

 

配置handler

     在springmvc.xml配置文件中配置。

<!-- 配置视图解析器: 如何把handler方法返回值解析作为实际的物理视图 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp" />
<property name="suffix" value=".jsp" />
</bean> <!-- 配置实现Controller接口的处理器 -->
<bean name="/queryItems2.do" class="com.kiwi.controller.ItemsController2" />

 

3.使用注解开发

/*
* Handler开发方式3: 使用注解开发
*/
@Controller
public class ItemsController3{ @RequestMapping("/queryItems3")
public String showList(Model model){ // 模拟查询商品列表数据
List<Items> list = new ArrayList<Items>();
list.add(new Items("笔记本3",6003f,new Date(),"联想笔记本值得信赖!!!"));
list.add(new Items("手机3",3003f,new Date(),"支持国产手机!!!"));
list.add(new Items("背包3",1003f,new Date(),"登山旅行必备!!!")); model.addAttribute("itemsList",list); return "/items/itemsList";
} }

 

配置

<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.kiwi" /> <!-- 配置视图解析器: 如何把handler方法返回值解析作为实际的物理视图 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp" />
<property name="suffix" value=".jsp" />
</bean> </beans>

SpringMVC基础学习(二)—开发Handler的更多相关文章

  1. Mybatis基础学习(二)—开发Dao方式

    一.原始Dao开发方式 UserDao.java public interface UserDao{ public User findUserByID(Serializable id); public ...

  2. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  3. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  4. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

  5. 零基础学习iOS开发

    零基础学习iOS开发不管你是否涉足过IT领域,只要你对iOS开发感兴趣,都可以阅读此专题. [零基础学习iOS开发][02-C语言]11-函数的声明和定义 摘要: 在上一讲中,简单介绍了函数的定义和使 ...

  6. SpringMVC入门学习(二)

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

  7. 零基础学习hadoop开发所必须具体的三个基础知识

    大数据hadoop无疑是当前互联网领域受关注热度最高的词之一,大数据技术的应用正在潜移默化中对我们的生活和工作产生巨大的改变.这种改变给我们的感觉是“水到渠成”,更为让人惊叹的是大数据已经仅仅是互联网 ...

  8. [iOS]关于零基础学习iOS开发的学习方法总结

    关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是 ...

  9. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

随机推荐

  1. 【译】Nodejs最好的ORM - TypeORM

    TypeORM github: https://github.com/typeorm/typeorm 这篇译文是从TypeORM github上的使用说明上翻译过来的,已经提交PR并merge到库中了 ...

  2. 精通gulp常用插件

    本文主要展示的是gulp常用插件的使用方法和用途,通过对插件的熟练运用达到精通gulp.不定期更新.可以到github上面下载DEMO. github地址:lin-xin/gulp-plugins 匹 ...

  3. 每天一个linux命令(37)--iostat命令

    Linux 系统中的iostat是I/O statistics (输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...

  4. 每天一个Linux命令(15)--tail命令

    tail 命令从指定点开始将文件写到标准输出.使用  tail  命令的  -f  选项可以方便的查阅正在改变的日志文件 , tail  -f  filename  会把  filename  里最尾 ...

  5. 【经验】AngularJS

    1.关于ng-model <textarea id="feature_name" class="col-sm-3" placeholder="软 ...

  6. Sort List leetcode

    这个题一开始本想用快速排序的,但是想了20分钟都没有头绪,难点在于快速排序的随机访问无法用链表实现,不过如果可以实现快速排序partition函数就可以了,但是这可能比较复杂,于是改用其他排序方法,上 ...

  7. ACM 组合数

    组合数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 找出从自然数1.2.... .n(0<n<10)中任取r(0<r<=n)个数的所有组合 ...

  8. cocos2dx 中文路径编译错误记录

    '/Q' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1> 'y' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1>C:\Program Files ...

  9. 在.NET项目中使用PostSharp,使用CacheManager实现多种缓存框架的处理

    在前面几篇随笔中,介绍了PostSharp的使用,以及整合MemoryCache,<在.NET项目中使用PostSharp,实现AOP面向切面编程处理>.<在.NET项目中使用Pos ...

  10. 初次接触java中的递归算法

    一道关于兔子繁衍的编程题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 自己考虑了挺久,思路出现了问题,甚至连 ...