SpringMVC07处理器方法的返回值
<body>
<!--返回值是string的内部视图 -->
<a href="student/add">add</a> <!--返回值是string的外部视图 -->
<a href="student/taobao">淘宝</a> <!--没有返回值 转发到内部视图 -->
<a href="student/request">request</a>
<!--没有返回值 重定向到内部视图 -->
<a href="student/response">response</a>
</body>
<?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: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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 配置springmvc的组件 -->
<context:component-scan base-package="cn.bdqn.controller"/> <!-- 视图解析器 后台返回的是 success! 应该拿到的是 /WEB-INF/jsp/success.jsp
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
--> <!-- 配置外部视图解析器 就不需要 视图解析器了! -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <!-- 外部视图 -->
<bean id="taobao" class="org.springframework.web.servlet.view.RedirectView">
<property name="url" value="http://www.taobao.com"/>
</bean>
</beans>
@Controller
@RequestMapping("/student")
public class StudentController { /**
* 返回值是string的内部视图
*/
@RequestMapping("/add")
public String add(){
System.out.println("进入了add");
return "success";
} /**
* 返回值是string的外部视图
*/
@RequestMapping("/taobao")
public String taobao(){
System.out.println("进入了taobao");
return "taobao";
}
/**
* 没有返回值 转发到内部视图
*/
@RequestMapping("/request")
public void request(HttpServletRequest request,HttpServletResponse response){
System.out.println("进入了request");
//转发
try {
request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 没有返回值 重定向到内部视图
*/
@RequestMapping("/response")
public void response(HttpServletRequest request,HttpServletResponse response){
System.out.println("进入了response");
//重定向
try {
/**
* 重定向是 客户端的 行为!
* 能直接访问 web-inf ??? 不行!
* response.sendRedirect("WEB-INF/jsp/success.jsp");
* 重定向到另一个方法 然后 那个方法做跳转!
*
*/
response.sendRedirect("success.jsp"); //前提是根目录下有 success.jsp /**
* 这时候的路径http://localhost:8080/springmvc08/student/success.jsp
* 为什么会有student/这一层目录
* 原因:
* 用户点击的是 student/response
* 系统会默认拿到student/ 当成目前的路径!
* 再做重定向的时候会默认加上student/
*/
} catch (IOException e) {
e.printStackTrace();
}
}
}
<body>
<!-- 在controller中 实现 方法之间的跳转 -->
<form action="student/changeMethod" method="post">
学生姓名:<input type="text" name="name"/>
年龄: <input type="password" name="age"/>
<input type="submit" value="新增"/>
</form>
</body>
<?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: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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 配置springmvc的组件 -->
<context:component-scan base-package="cn.bdqn.controller"/> <!-- 视图解析器 后台返回的是 success! 应该拿到的是 /WEB-INF/jsp/success.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean> </beans>
@Controller
@RequestMapping("/student")
public class StudentController { /**
* 转发是默认的格式
* 01.看路径
* 02.看数据是否传递
*/
@RequestMapping("/addRequest")
public ModelAndView addRequest(Student student){
System.out.println("进入了addRequest");
ModelAndView mv=new ModelAndView();
mv.addObject("student", student).setViewName("success");
return mv;
} /**
* 重定向
* 01.客户端行为 不能访问WEB-INF
* 02.以访问的路径为准,所以上个例子中的student/ 会出现!
* 03.如果使用重定向 不加/ 就是以上次访问的路径为准
* 如果加上了/ 就是以项目的跟路径为准
*/
@RequestMapping("/addResponse")
public ModelAndView addResponse(Student student){
System.out.println("进入了addResponse");
ModelAndView mv=new ModelAndView();
//需要在 webroot下 创建 success.jsp
mv.addObject("student", student).setViewName("redirect:/success.jsp");
return mv;
}
/**
* 跳转到内部方法
*/
@RequestMapping("/changeMethod")
public String changeMethod(Student student){
System.out.println("进入了changeMethod");
ModelAndView mv=new ModelAndView();
mv.addObject("student", student);
//return "redirect:list"; 重定向 不能使用 / 跳转到当前controller中的list方法 ! 数据丢失
return "forward:list";// 转发list方法 数据肯定保留
} @RequestMapping("/list")
public String list(Student student){
System.out.println("进入了list");
System.out.println(student.getName());
System.out.println(student.getAge());
return "success";
} }
==================接收并返回json数据======================
需要导入jquery和 Gson的jar包
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
$("button").click(function(){ //按钮的点击事件
$.ajax({
url:"user/doAjax",
data:{
name:"小黑",
age:50
},
success:function(data){
/* 01.在前台转换成json数据
var json=eval("("+data+")");
alert(json.name+ " "+json.age); */
/*
02.在后台设置response.setContentType("application/json");
*/
alert(data.name+ " "+data.age);
}
})
}) }) </script>
</head>
<body>
<button>提交ajax请求</button>
</body>
</html>
index.jsp页面
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 配置需要扫描的包 -->
<context:component-scan base-package="cn.bdqn.controller"/>
<!-- 允许静态资源的访问 -->
<mvc:resources location="/js/" mapping="/js/**"/>
<!-- 开启注解 -->
<mvc:annotation-driven/>
<!--
之前的
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
-->
</beans>
springmvc-servlet.xml文件
@Controller
@RequestMapping("/user")
public class MyController { @RequestMapping("doAjax")
public void doAjax(String name, int age, HttpServletResponse response)
throws IOException {
System.out.println("进入了doAjax......");
System.out.println(name);
System.out.println(age);
// 放入map集合
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", name);
map.put("age", age); // response.setHeader("Content-type", "text/html;charset=utf-8");
response.setContentType("application/json"); // 设置返回的是json页面
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println("json=====" + json);
// 把json数据返回给界面
PrintWriter writer = response.getWriter();
writer.print(json);
}
}
Controller中的代码
=================ajax验证用户名是否存在====================
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'success.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
//验证用户名是否存在
$("#userName").blur(function(){ //按钮的点击事件
var name= $("#userName").val();
$.ajax({
url:"user/addUser",
type:"post",
data:"userName="+name,
success:function(data){
alert(data);
}
})
}) }) </script>
</head> <body>
<h1>json验证</h1> 用户名:<input type="text" id="userName" name="userName">
</body>
</html>
创建一个对应的login.jsp
/**
* 用户名验证 ajax
*/
@RequestMapping("/addUser")
public void doAjax(String name, HttpServletResponse response)
throws IOException {
System.out.println("进入了addUser......");
System.out.println(name);
boolean flag = false;
if (name.equals("admin")) {
flag = true;
}
response.setContentType("application/json"); // 设置返回的是json页面
Gson gson = new Gson();
String json = gson.toJson(flag);
System.out.println("json=====" + json);
// 把json数据返回给界面
PrintWriter writer = response.getWriter();
writer.write(json);
}
在Controller中增加代码
==================处理器返回Object对象=====================
导入需要的Jackson jar包
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
$("button").click(function(){ //按钮的点击事件
$.ajax({
url:"user/doAjax",
success:function(data){
// alert(data) 返回单个数据 使用
// alert(data.name+" "+data.age);返回一个对象使用
//alert(data.user1.name+" "+data.user2.name); 返回一个map集合 $(data).each(function(i){
alert(data[i].name+" "+data[i].age); //返回一个list集合
})
}
})
}) }) </script>
</head>
<body>
<button>提交ajax请求</button>
</body>
</html>
index.jsp页面
package cn.bdqn.controller; import java.util.ArrayList;
import java.util.List; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import cn.bdqn.bean.User; @Controller
@RequestMapping("/user")
public class MyController { /**
* 01.返回的是一个Object对象
* @return
*/
/** @RequestMapping("/doAjax")
@ResponseBody
// 把我们的返回的数据 放在相应体中
public Object doAjax() {
System.out.println("进入了doAjax......");
return 45454.2515;
}*/ /**
* 02.返回的是一个Object对象
* produces :响应的界面格式
*/
/**@RequestMapping(value = "/doAjax", produces = "text/html;charset=utf-8")
@ResponseBody
// 把我们的返回的数据 放在相应体中
public Object doAjax() {
System.out.println("进入了doAjax......");
return "大家辛苦了";
}*/ /**
* 03.返回的是一个Object对象
*/
/**@RequestMapping(value = "/doAjax")
@ResponseBody
// 把我们的返回的数据 放在相应体中
public Object doAjax() {
System.out.println("进入了doAjax......");
return new User("小黑", 50);
}*/
/**
* 04.返回的是一个Map集合
*/
/**@RequestMapping(value = "/doAjax")
@ResponseBody
// 把我们的返回的数据 放在相应体中
public Object doAjax() {
System.out.println("进入了doAjax......");
Map<String, Object> map = new HashMap<String, Object>();
map.put("user1", new User("小黑1", 50));
map.put("user2", new User("小黑2", 50));
return map;
}*/ /**
* 05.返回的是一个list集合
*/
@RequestMapping(value = "/doAjax")
@ResponseBody
// 把我们的返回的数据 放在相应体中
public Object doAjax() {
System.out.println("进入了doAjax......");
List<User> list = new ArrayList<User>();
list.add(new User("小黑1", 50));
list.add(new User("小黑2", 60));
return list;
} }
Controller代码
SpringMVC07处理器方法的返回值的更多相关文章
- 11.SpringMVC注解式开发-处理器方法的返回值
处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...
- SSM-SpringMVC-21:SpringMVC中处理器方法之返回值Object篇
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 今天要记录的是处理方法,返回值为Object的那种,我给它分了一下类: 1.返回值为Object数值(例如1) ...
- SSM-SpringMVC-20:SpringMVC中处理器方法之返回值void篇
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 处理器的方法我们之前做过,返回值为String的,返回值为ModelAndView的,我们这个讲的这个返回 ...
- SpringMVC_处理器方法的返回值
一.返回ModelAndView 若处理器方法处理完后,需要跳转到其他资源,且又要在跳转的资源间传递数据,此时处理器方法返回ModelAndView比较好.当然,若要返回ModelAndView ...
- springmvc 注解式开发 处理器方法的返回值
1.返回void -Ajax请求 后台: 前台: 返回object中的数值型: 返回object中的字符串型: 返回object中的自定义类型对象: 返回object中的list: 返回object中 ...
- Controller方法的返回值
方法的返回值1.ModelAndView这个就不多说,这是最基础的,前面定义一个ModelAndView,中途使用addObject方法添加属性,再返回.视图解析器会自动扫描到的.2.String这个 ...
- SpringMVC由浅入深day01_10@RequestMapping_11controller方法的返回值
10 @RequestMapping 10.1 Url路径映射 @RequestMapping(value="/item")或@RequestMapping("/item ...
- 一个方法中的ajax在success中renturn一个值,但是方法的返回值是undefind?
https://segmentfault.com/q/1010000003762379 A页面 console.log(handleData("search_list", &quo ...
- java中Arrays类中,binarySearch()方法的返回值问题
最近在复习Java知识,发现果然不经常使用忘得非常快... 看到binarySearch()方法的使用时,发现书上有点错误,于是就自己上机实验了一下,最后总结一下该方法的返回值. 总结:binaryS ...
随机推荐
- 【NOI2006】最大获利
[问题描述] 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就 ...
- Android放大镜的实现
package chroya.demo.magnifier; import android.content.Context; import android.graphics.Bitmap; impor ...
- Git对于单个文件的分批提交方式的使用
很多时候,对于一个大的文件,可能有的同学改完之后不想一次提交,想分批提交.但这个时候由于git add的机制往往add之后就是整个一个文件被放到stage区了,这个时候肯定会想能不能对一个文件可以进行 ...
- Eclipse中使用Maven创建Servlet3.0 Web 项目
摘要 Apache Maven是一个优秀的项目构建和管理工具,许多开源项目都使用Maven进行构建.由于最近工作中要用到Maven,于是这里记录下在Eclipse中使用Maven插件创建一个基于Ser ...
- 2.2.5 NIO.2 Path 和 Java 已有的 File 类
NIO与IO交互 toPath() File -- Path toFile() Path -- File Demo: import java.io.File; import java.nio.file ...
- FLEX 网格布局及响应式处理
上一篇文章用Flex实现BorderLayout,这一章我们来实现常用的网格布局和响应式处理. 首先我们定义HTML结构,主Box为grid,每项为grid-cell,下面就是我们HTML代码结构. ...
- centos7 服务器安装nginx,mysql,php
一.概述 项目的需要,今天在虚拟机上基于Centos安装配置了服务器运行环境,web服务用 nginx,数据库存储在mysql,动态脚本语言是php. 二.步骤 首页保证Centos7已经安装完毕,正 ...
- SQL数据库增删改查
数据类型 运行cmd 输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据库服务 输入net pause MSSQLserve ...
- putty登录远程数据库Oracle
ssh username@127.0.0.1 password oracle -su plusql /nolog dbname/dbpassword sql:exit oracle:$exit ssh ...
- 转:Hprose for php(一)——快速入门
文章来自于:http://blog.csdn.net/half1/article/details/21095665 本文参考了Hprose官方的用户手册,Hprose官网:http://www.hpr ...