添加spring相关包,笔者用最新包3.2.2,可以去官方下载最新包http://www.springsource.org/spring-community-download

模块说明,注释在代码中,方便理解

实例一:使用实现接口的方法实现控制器

web.xml中配置

<?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"><servlet><servlet-name>hello</servlet-name> <!-- 此处用的是hello,所以同目录下的想xml文件名应该为hello-servlet.xml --><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

创建关联的hell-servlet.xml(在/WEB-INF/目录下创建)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置控制器,请求路径/welcome.html,clas指定处理类 --><bean name="/welcome.html" class="com.springmvc.controller.WelcomeController" /><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 定义视图前缀格式 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 定义视图后缀格式 --><property name="suffix" value=".jsp"/></bean>
</beans>

编写控制器类WelcomeController.java

package com.springmvc.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;/****  WelcomeController.java   **  @version : 1.1*  *  @author  : 苏若年    <a href="mailto:DennisIT@163.com">发送邮件</a>*    *  @since   : 1.0        创建时间:    2013-4-12  下午10:52:16*     *  TODO     : **/
public class WelcomeController extends AbstractController{@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest arg0,HttpServletResponse arg1) throws Exception {System.out.println("com.springmvc.controller.WelcomeController");//返回视图return new ModelAndView("welcome");}}

访问路径:http://localhost:8080/项目名称/welcome.html

实例二:使用Annotation实现控制器

web.xml内容同上

View Code

<?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"><servlet><servlet-name>user</servlet-name> <!-- 此处用的是user,所以同目录下的想xml文件名应该为user-servlet.xml --><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><servlet-mapping><servlet-name>user</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

user-servlet.xml中的内容

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><!--指定使用注解方式配置,配置自动扫描的包名,base-package指定自己应用中控制器所在的包目录<context:component-scan/> 扫描指定的包中的类上的注解,常用的注解有: @Controller 声明Action组件@Service 声明Service组件@Service("myMovieLister") @Repository 声明Dao组件@Component 泛指组件, 当不好归类时. @RequestMapping("/menu") 请求映射 @Resource用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanName") @Autowired用于注入,(srping提供的) 默认按类型装配 @Transactional(rollbackFor={Exception.class}) 事务管理 @ResponseBody @Scope("prototype")设定bean的作用域--><context:component-scan base-package="com.springmvc.demo.controller" /><!-- 默认的注解映射的支持 --><mvc:annotation-driven /><!-- 配置视图解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 定义视图前缀格式 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 定义视图后缀格式 --><property name="suffix" value=".jsp" /></bean>
</beans>

UserController控制器中的内容

package com.springmvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/****  UserController.java   **  @version : 1.1*  *  @author  : 苏若年    <a href="mailto:DennisIT@163.com">发送邮件</a>*    *  @since   : 1.0        创建时间:    2013-4-13  上午12:58:05*     *  TODO     : **/@Controller
public class UserController {@RequestMapping(value={"/list"})public String listUser(){//value值不一定要跟方法名相同,value值是请求的url,让请求与对应的方法绑定System.out.println("执行list操作");return "list";    //创建视图页面}@RequestMapping("/insert")public String insert(){//可以不写value="/insert",上述表示方法也可以System.out.println("执行insert操作");return "insert";    //创建视图页面}@RequestMapping(value="delete")public String delete(){System.out.println("执行delete操作");return "delete";}
}

这样就可以实现一个控制器中执行相关的多个请求处理了.

在/WEB-INF/jsp/目录下分别有方法返回的视图页面list.jsp,insert.jsp和delete.jsp页面

针对list业务访问方式举例:http://localhost:8080/项目名称/insert

针对delete业务访问方式举例:http://localhost:8080/项目名称/delete

如何给控制器中传入参数

只需要传入的参数的实参参数名跟形成方法中的形参名一致即可

    @RequestMapping(value="select")public String select(String username){System.out.println("执行查询操作:要查询的用户名为:" + username);return "select";}

此时访问的时候可以用如下方式传入参数

http://localhost:8080/myproject/select?username=dennisit
这里username必须跟select方法的形参名一致才能保证数据传递成功,在后台打印如下结果:

执行查询操作:要查询的用户名为:dennisit

虽然这里有形参,但我们使用http://localhost:8080/myproject/select

访问也是可以成功的,表示参数为null,可以通过后台打印看出

执行查询操作:要查询的用户名为:null

如何获取值展示到视图页面

方案一(不推荐): 在参数中加入一个Map<String, String>值对,可以按照session的思想理解,使用方式类似

@RequestMapping(value="select")
public String select(String username,Map<String,Object> context){System.out.println("执行查询操作:要查询的用户名为:" + username);context.put("username", username);return "select";
}

访问路径:http://localhost:8080/myproject/select?username=dennisit

WEB-INF/jsp/select.jsp中内容

  <body>执行了查询操作,查询的用户名为${ username }</body>

程序运行结果:执行了查询操作,查询的用户名为dennisit

方案二(推荐):在参数中使用Model对象

@RequestMapping(value="select")
public String select(String username,Model model){System.out.println("执行查询操作:要查询的用户名为:" + username);model.addAttribute("username", username);return "select";
}

访问路径跟执行结果同上,只是用的传递参数的对象由Map集合编程Model对象,用法没有区别

[转载自:[http://www.cnblogs.com/dennisit/archive/2013/04/13/3017910.html]

转载于:https://www.cnblogs.com/warner/archive/2013/04/14/3021269.html

SpringMVC 实例应用 -- 不同方式控制器实现与参数传递相关推荐

  1. SpringMVC 实例 --非注解【过时的,留作回忆】

    练习项目:test SpringMVC 实例 --非注解,只用于学习理解.到了spring 3.0以后或许部分东西已经过时了,在实际工作中并不一定好用. 但对于理解SpringMVC的实现方式很有帮助 ...

  2. SpringMVC与Struts2等MVC控制器

    [1]什么是MVC MVC是一种软件架构的思想,将软件按照**模型(Model).视图(View).控制器(Controller)**来划分. Model模型 M:Model,模型层,指工程中的Jav ...

  3. go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别

    入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...

  4. mysql多实例(mysqld_multi方式)

    以下内容为在学习MYSQL 过程中的实验步骤, mysql多实例(mysqld_multi方式) 1.建立各个实例的目录 [root@mdw ~]# mkdir /mnt/data/mysql/330 ...

  5. 解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题

    解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题 参考文章: (1)解决springmvc在multipart/form-data方式 ...

  6. kylinserverv10部署dm8单实例命令行方式安装

    kylinserverv10部署dm8单实例命令行方式安装 dm8-kylinserverv10 目录 一.安装流程图开始是 停服务--备份--卸载检查是否安装 |否 安装 <|结束二.安装步骤 ...

  7. 把接口作为函数的参数,那么任何实现了接口的类的实例都可以作为此函数的参数传递...

    把接口作为函数的参数,那么任何实现了接口的类的实例都可以作为此函数的参数传递 转载于:https://www.cnblogs.com/xiaodangshan/p/9784315.html

  8. 基于Netty手工实现springMVC框架-----两种方式加载控制器

    1.手写springMVC框架 本篇我们通过两种方式来加载控制器,一种是配置文件的方式:另外一种是通过注解的形式. 1.配置文件方式 1.自定义Controller配置文件XML 我定义的格式如下: ...

  9. springmvc 实例应用

    springmvc 应用实例 今天学习,网上好多实例,好多照着坐下来都报错,找了好多资料,总算是搞出来了,方面以后更多的人学习,这里贴出全部代码.与同仁共同交流. 项目结构图: 应用实体 View C ...

最新文章

  1. scala与python混合调用实验
  2. 富贵不压重发_为什么老人常说“贵人不顶重发”,“重发”是什么意思? ?...
  3. WebCrack:网站后台弱口令批量检测工具
  4. 【LeetCode笔记】617. 合并二叉树(Java、DFS、二叉树)
  5. [AtCoder-ARC073F]Many Moves
  6. 人类心理学中几乎没有人知道的东西是什么?
  7. 故障分析:数据库一致性关闭缓慢问题诊断
  8. mongoose的操作及其常用命令
  9. azure 入门_Azure Function应用程序入门
  10. html5的video怎么把里面的控制器移出来_6个月宝宝米粉怎么冲,一次吃多少?一天吃几次?关于宝宝米粉的难题,答案都在这了!...
  11. 新加坡推出人工智能计划AI.SG 迎战人工智能和数据科学关键难题
  12. 7-5 判断上三角矩阵
  13. PS、Ai、Pr等如何修改安装位置的问题
  14. cookie 存放位置
  15. Install Ubuntu18.04.1 and Win7 on A53S
  16. 微信支付要租用服务器吗,切记!使用微信支付一定要打开这些功能!
  17. vue支付宝html,vue 解决在微信内置浏览器中调用支付宝支付的情况
  18. 计算机教子好考吗,考进985的孩子:父母都是这样教育孩子,这些方法比刷题管用...
  19. 友盟QQ第三方登录分享
  20. “水仙花数”与变种“水仙花数”

热门文章

  1. centos一键清理磁盘空间_docker越来越大,心慌,清理一波吧
  2. 用iframe transform: scale() 缩小后点不到按钮_“打分”或者“打多少分”用英文可以怎样去表达?...
  3. python 月活_TikTok用户月活超1亿意味着什么?什么是月活用户?
  4. php查询mysql表里的数据_3.php查询mysql数据表所有记录
  5. CentOS 6 rpm方式安装mysql
  6. java servlet是接口_JavaWeb:Servlet 接口
  7. 样条曲面_这样的曲面是如何画成的,用好剪裁工具,便迎刃而解
  8. python多核运行程序怎么关闭_在多核上运行程序
  9. 企业邮箱服务器删除邮件,企业邮箱Webmail对邮件进行删除或者清空邮件的方法...
  10. jvm对于java的意义_谈谈对JVM的理解