学习笔记_springmvc返回值、数据写到页面、表单提交、ajax、重定向

学习笔记_springmvc返回值、数据写到页面、表单提交、ajax、重定向

时间 2014-06-04 11:13:48 CSDN博客 原文  http://blog.csdn.net/jerome_s/article/details/28401275

 

数据写到页面

后台往前台传数据

TestController添加

/**
   * 方法的返回值采用ModelAndView, new ModelAndView("index", map);,
   * 相当于把结果数据放到request里面
   * @return
   * @throws Exception
   */
  @RequestMapping("/toPerson4.do")
  public ModelAndView toPerson4() throws Exception{
    Person person = new Person();
    person.setName("jerome");
    person.setAge(22);
    person.setAddress("nanan");
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = format.parse("2012-12-21");
    person.setBirthday(date);
    
    Map<String,Object> map = new HashMap<String, Object>();
    map.put("p", person);
    return new ModelAndView("jsp/index",map);
  }   * 方法的返回值采用ModelAndView, new ModelAndView("index", map);,
   * 相当于把结果数据放到request里面
   * @return
   * @throws Exception
   */
  @RequestMapping("/toPerson4.do")
  public ModelAndView toPerson4() throws Exception{
    Person person = new Person();
    person.setName("jerome");
    person.setAge(22);
    person.setAddress("nanan");
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = format.parse("2012-12-21");
    person.setBirthday(date);
    
    Map<String,Object> map = new HashMap<String, Object>();
    map.put("p", person);
    return new ModelAndView("jsp/index",map);
  }

页面接收:index.jsp

 

<body>
     <h5>${p.name }</h5>
     <h5>${p.age }</h5>
     <h5>${p.address }</h5>
     <h5><fmt:formatDate value="${p.birthday }" pattern="yyyy-MM-dd"/></h5>
  </body>body>
     <h5>${p.name }</h5>
     <h5>${p.age }</h5>
     <h5>${p.address }</h5>
     <h5><fmt:formatDate value="${p.birthday }" pattern="yyyy-MM-dd"/></h5>
  </body>

在jsp引入fmt标签库

* 文章包含被禁用的url,无法保存和发布。 

太坑了,这个链接也屏蔽~ 
重启tomcat访问:

http://localhost:8080/springmvc-2/test/toPerson4.do
输出信息正确;

另外一种方式: 

/**
   * 直接在方法的参数列表中来定义Map,这个Map即使ModelAndView里面的Map
   * 由视图解析器统一处理,统一走ModelAndView的接口
   * 也不建议使用
   * @param map
   * @return
   * @throws Exception
   */
  @RequestMapping("/toPerson5.do")
  public String toPerson5(Map<String,Object> map) throws Exception{
    Person person = new Person();
    person.setName("jerome");
    person.setAge(22);
    person.setAddress("nanan");
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = format.parse("2012-12-21");
    person.setBirthday(date);
    
    map.put("p", person);
    return "jsp/index";
  }   * 直接在方法的参数列表中来定义Map,这个Map即使ModelAndView里面的Map
   * 由视图解析器统一处理,统一走ModelAndView的接口
   * 也不建议使用
   * @param map
   * @return
   * @throws Exception
   */
  @RequestMapping("/toPerson5.do")
  public String toPerson5(Map<String,Object> map) throws Exception{
    Person person = new Person();
    person.setName("jerome");
    person.setAge(22);
    person.setAddress("nanan");
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = format.parse("2012-12-21");
    person.setBirthday(date);
    
    map.put("p", person);
    return "jsp/index";
  }

重启tomcat访问:
http://localhost:8080/springmvc-2/test/toPerson5.do
输出正确;

建议使用方式:

/**
   *在参数列表中直接定义Model,model.addAttribute("p", person);
   *把参数值放到request类里面去,建议使用
   * @param map
   * @return
   * @throws Exception
   */
  @RequestMapping("/toPerson6.do")
  public String toPerson6(Model model) throws Exception {
    Person person = new Person();
    person.setName("jerome");
    person.setAge(22);
    person.setAddress("nanan");
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = format.parse("2012-12-21");
    person.setBirthday(date);
    //把参数值放到request类里面去
    model.addAttribute("p", person);
    return "jsp/index";
  }   *在参数列表中直接定义Model,model.addAttribute("p", person);
   *把参数值放到request类里面去,建议使用
   * @param map
   * @return
   * @throws Exception
   */
  @RequestMapping("/toPerson6.do")
  public String toPerson6(Model model) throws Exception {
    Person person = new Person();
    person.setName("jerome");
    person.setAge(22);
    person.setAddress("nanan");
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date = format.parse("2012-12-21");
    person.setBirthday(date);
    //把参数值放到request类里面去
    model.addAttribute("p", person);
    return "jsp/index";
  }

重启tomcat访问:
http://localhost:8080/springmvc-2/test/toPerson6.do
输出正确数据;

不需要页面跳转:ajax

后台方法:

在TestController加

/**
   * ajax的请求返回值类型应该是void,参数列表里直接定义HttpServletResponse,
   * 获得ProntWriter的类,最后可把结果写到页面
   * 不建议使用
   * @param name
   * @param response
   */
  @RequestMapping("/ajax.do")
  public void ajax(String name, HttpServletResponse response) {
    String result = "hello " + name;
    try {
      response.getWriter().write(result);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }   * ajax的请求返回值类型应该是void,参数列表里直接定义HttpServletResponse,
   * 获得ProntWriter的类,最后可把结果写到页面
   * 不建议使用
   * @param name
   * @param response
   */
  @RequestMapping("/ajax.do")
  public void ajax(String name, HttpServletResponse response) {
    String result = "hello " + name;
    try {
      response.getWriter().write(result);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

前台调用 新建ajax.jsp
<input id="myButton" type="button" value="click">
Webroot新建js文件夹将jquery拷贝进来;
引进来jquery 和写js脚本:

<script type="text/javascript">
  $(function(){
      $("#myButton").click(function(){
        $.ajax({
          url:"test/ajax.do",
          type:"post",
          dataType:"text",
          data:{
            name:"zhangsan"
          },
          success:function(responseText){
            alert(responseText);
          },
          error:function(){
            alert("system error");
          }
        });
      });
    });
  </script>script type="text/javascript">
  $(function(){
      $("#myButton").click(function(){
        $.ajax({
          url:"test/ajax.do",
          type:"post",
          dataType:"text",
          data:{
            name:"zhangsan"
          },
          success:function(responseText){
            alert(responseText);
          },
          error:function(){
            alert("system error");
          }
        });
      });
    });
  </script>

后台写一个转发:

@RequestMapping("/toAjax.do")
  public String toAjax() {
    return "jsp/ajax";
  }("/toAjax.do")
  public String toAjax() {
    return "jsp/ajax";
  }

重启tomcat 访问 
http://localhost:8080/springmvc-2/test/toAjax.do
Click,弹出hello zhangsan,成功;

以上方法不建议使用,建议使用:

/**
   * 直接在参数的列表上定义PrintWriter,out.wrote(result);
   * 把结果写到页面,建议使用
   * @param name
   * @param out
   */
  @RequestMapping("/ajax1.do")
  public void ajax1(String name, PrintWriter out) {
    String result="hello1 "+name;
    out.write(result);
  }   * 直接在参数的列表上定义PrintWriter,out.wrote(result);
   * 把结果写到页面,建议使用
   * @param name
   * @param out
   */
  @RequestMapping("/ajax1.do")
  public void ajax1(String name, PrintWriter out) {
    String result="hello1 "+name;
    out.write(result);
  }

修改ajax.jap页面的,js脚本,跳转的url是
url:"test/ajax1.do",
重启tomcat 访问  
http://localhost:8080/springmvc-2/test/toAjax.do
Click
弹出 hello1 zhangsan;

表单:

拷贝一份index,起名form.jsp

<body>
  <form action="test/toPerson7.do" method="post">
      name:<input name="name" type="text"><br/>
      age:<input name="age" type="text"><br/>
      address:<input name="address" type="text"><br/>
      birthday:<input name="birthday" type="text"><br/>
    <input type="submit"><br/>
  </form>body>
  <form action="test/toPerson7.do" method="post">
      name:<input name="name" type="text"><br/>
      age:<input name="age" type="text"><br/>
      address:<input name="address" type="text"><br/>
      birthday:<input name="birthday" type="text"><br/>
    <input type="submit"><br/>
  </form>

TestController

 

@RequestMapping("/toPerson7.do")
  public String toPerson7(Person person) {
    System.out.println(person);
    return "jsp/index";
  }"/toPerson7.do")
  public String toPerson7(Person person) {
    System.out.println(person);
    return "jsp/index";
  }

重启tomcat 访问:
http://localhost:8080/springmvc-2/test/toForm.do
提交跳转到
http://localhost:8080/springmvc-2/test/toPerson7.do
控制台输出
Person [name=aa, address=asdf, birthday=Tue Jun 03 00:00:00 CST 2014, age=22]

请求方式的指定:

后台可以指定提交方法,如果前台不是用的同一种提交方式 将报错;

/**
   * @RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
   * 可以指定请求方式,前台就必须要以它制定好的方式来访问,不然会出现405错误
   * @param person
   * @return
   */
  @RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
  public String toPerson7(Person person) {
    System.out.println(person);
    return "jsp/index";
  }   * @RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
   * 可以指定请求方式,前台就必须要以它制定好的方式来访问,不然会出现405错误
   * @param person
   * @return
   */
  @RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
  public String toPerson7(Person person) {
    System.out.println(person);
    return "jsp/index";
  }

Form.jap的method修改为get和post测试;

重定向:

同一个 controller

/**
   * 重定向:controller内部重定向,redirect:加上同一个controller中
   * 的requesMapping的值
   * @return
   */
  @RequestMapping("/redirectToForm.do")
  public String redirectToForm() {
    return "redirect:toForm.do";
  }   * 重定向:controller内部重定向,redirect:加上同一个controller中
   * 的requesMapping的值
   * @return
   */
  @RequestMapping("/redirectToForm.do")
  public String redirectToForm() {
    return "redirect:toForm.do";
  }

重启tomcat 访问:
http://localhost:8080/springmvc-2/test/redirectToForm.do 
重定向到
http://localhost:8080/springmvc-2/test/toForm.do

Controller之间的重定向:

拷贝一份TestController改成TestController1
留这个

@Controller
//用来标注当前类是springmvc的控制层的类
@RequestMapping("/test1")
//controller的唯一标识或者命名空间
public class TestController1 {
  
  @RequestMapping("/toForm.do")
  public String toForm() {
    return "jsp/form";
  }

}
//用来标注当前类是springmvc的控制层的类
@RequestMapping("/test1")
//controller的唯一标识或者命名空间
public class TestController1 {
  
  @RequestMapping("/toForm.do")
  public String toForm() {
    return "jsp/form";
  }

}

TestController 添加

/**
   *  controller之间的重定向:必须要指定好controller的命名空间再
   *  指定requestMapping的值,redirect:后必须要加/,是从根目录开始,
   *  否则就从当天test找了
   * @return
   */
  @RequestMapping("/redirectToForm1.do")
  public String redirectToForm1() {
    return "redirect:/test1/toForm.do";
  }   *  controller之间的重定向:必须要指定好controller的命名空间再
   *  指定requestMapping的值,redirect:后必须要加/,是从根目录开始,
   *  否则就从当天test找了
   * @return
   */
  @RequestMapping("/redirectToForm1.do")
  public String redirectToForm1() {
    return "redirect:/test1/toForm.do";
  }

重启tomcat 访问

http://localhost:8080/springmvc-2/test/redirectToForm1.do http://localhost:8080/springmvc-2/test/redirectToForm1.do

重定向到

http://localhost:8080/springmvc-2/test/toForm.do

jquery-1.6.2.js下载:


http://pan.baidu.com/s/1o6nwWP0、

欢迎关注公众号-Java精选集萃:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现将 AJAX 异步提交的表单数据传递给 Spring MVC,可以采用以下步骤: 1. 在前端页面中,使用 jQuery 的 AJAX 方法将表单数据异步提交到后端的 Spring MVC 控制器中。 2. 在 Spring MVC 控制器中,使用 @RequestParam 注解或 HttpServletRequest 对象来获取 AJAX 提交的表单数据。 3. 对表单数据进行处理和验证,并将处理后的结果返回给前端页面或者进行其他业务逻辑操作。 以下是一个简单的示例代码: 前端页面: ```html <form id="myForm"> <input type="text" name="username"> <input type="password" name="password"> <button type="button" onclick="submitForm()">Submit</button> </form> <script> function submitForm() { var formData = $('#myForm').serialize(); $.ajax({ url: '/submitForm', type: 'POST', data: formData, success: function(result) { // 处理返回结果 } }); } </script> ``` Spring MVC 控制器: ```java @Controller public class MyController { @PostMapping("/submitForm") @ResponseBody public String submitForm(@RequestParam("username") String username, @RequestParam("password") String password) { // 处理表单数据 return "success"; } } ``` 在上述示例中,前端页面中的 submitForm() 方法使用 jQuery 的 serialize() 方法将表单数据序列化为字符串,并使用 AJAX 异步提交到后端的 Spring MVC 控制器中。 Spring MVC 控制器中的 submitForm() 方法使用 @RequestParam 注解获取 AJAX 提交的表单数据,并对表单数据进行处理和验证,最后返回一个字符串表示处理结果。其中,@ResponseBody 注解表示返回的字符串将直接作为响应体返回给前端页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值