<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处理器方法的返回值的更多相关文章

  1. 11.SpringMVC注解式开发-处理器方法的返回值

    处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...

  2. SSM-SpringMVC-21:SpringMVC中处理器方法之返回值Object篇

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 今天要记录的是处理方法,返回值为Object的那种,我给它分了一下类: 1.返回值为Object数值(例如1) ...

  3. SSM-SpringMVC-20:SpringMVC中处理器方法之返回值void篇

      ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 处理器的方法我们之前做过,返回值为String的,返回值为ModelAndView的,我们这个讲的这个返回 ...

  4. SpringMVC_处理器方法的返回值

    一.返回ModelAndView    若处理器方法处理完后,需要跳转到其他资源,且又要在跳转的资源间传递数据,此时处理器方法返回ModelAndView比较好.当然,若要返回ModelAndView ...

  5. springmvc 注解式开发 处理器方法的返回值

    1.返回void -Ajax请求 后台: 前台: 返回object中的数值型: 返回object中的字符串型: 返回object中的自定义类型对象: 返回object中的list: 返回object中 ...

  6. Controller方法的返回值

    方法的返回值1.ModelAndView这个就不多说,这是最基础的,前面定义一个ModelAndView,中途使用addObject方法添加属性,再返回.视图解析器会自动扫描到的.2.String这个 ...

  7. SpringMVC由浅入深day01_10@RequestMapping_11controller方法的返回值

    10 @RequestMapping 10.1 Url路径映射 @RequestMapping(value="/item")或@RequestMapping("/item ...

  8. 一个方法中的ajax在success中renturn一个值,但是方法的返回值是undefind?

    https://segmentfault.com/q/1010000003762379 A页面 console.log(handleData("search_list", &quo ...

  9. java中Arrays类中,binarySearch()方法的返回值问题

    最近在复习Java知识,发现果然不经常使用忘得非常快... 看到binarySearch()方法的使用时,发现书上有点错误,于是就自己上机实验了一下,最后总结一下该方法的返回值. 总结:binaryS ...

随机推荐

  1. 【USACO 3.2.3】纺车的轮子

    [描述] 一架纺车有五个纺轮,这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位置开始转动.轮子按照角度变大 ...

  2. 对于HttpContext.Current的一点理解

    string[] userInfomationSplits = HttpContext.Current.User.Identity.Name.Split(new string[] { "\\ ...

  3. 外边距叠加collapsing-margin

    原载:Smallni | http://www.smallni.com/collapsing-margin/ 恩,margin叠加一直是个问题,也是我们一直会遇到的问题,很久以前就想把这个知识点整理下 ...

  4. win10开始菜单打不开的解决办法

    解决方法: 1.在Win10系统下按Win+R打开运行,输入services.msc回车打开服务: 2.在服务中找到User Manager服务;3.打开usermanager服务属性,将其启动类型设 ...

  5. 纯js制作遮罩层对话框 -- g皓皓

    //本文支持js在线工具测试.转载请注明出处. <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> < ...

  6. css伪元素

    CSS 伪元素用于向某些选择器设置特殊效果. 1.:first-line 伪元素  "first-line" 伪元素用于向文本的首行设置特殊样式.注意:"first-li ...

  7. iPhone mobile safari fixed 元素滚动慢的问题处理

    最近做一个手机阅读应用,抓取网站数据,做格式化后,适合手机浏览器以及电脑上阅读,不显示任何其他内容无关元素. Site:http://cbread.duapp.com/ 固定左侧边栏时,使用的CSS如 ...

  8. 使用C#的自定义事件

    public class CarDealer { public Action<string> NewCarInfo; //使用系统定义的泛型委托 public void NewCarCom ...

  9. codeproject

    search: http http://www.codeproject.com/Articles/96620/Writing-Http-Handlers-and-Modules-in-IIS-7-5 ...

  10. Jzzhu and Cities

    CF #257 div2D:http://codeforces.com/contest/450/problem/D 题意:给你n个城市,m条无向有权边.另外还有k条边,每条边从起到到i.求可以删除这k ...