SpringMVC的请求处理,ajax请求,传递的参数类型,返回值类型

本文记录第二天SpringMVC学习内容,包括指定请求方式(如Get、Post),处理逐个请求及批量操作(请求参数为对象)。还介绍在index.jsp页面创建ajax异步请求,将jsp参数值放入student类,用ObjectMapper类将其转为json格式并输出响应请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二天的SpringMVC的学习

指定请求的方式/ 常用的有Get Post等等,分别设置两个请求方式:

请求:

<p> 第一个springmvc请求</p>
<p><a href="user/some.do">发起dosome请求</a></p>

post请求:以表单的方式提交给controller

<form action="user/doveiw.do" method="post">
    姓名:<input type="text" name="name">
    年龄:<input type="text" name="age">
    <input type="submit" name ="提交按钮">
</form>

在Mycontroller类的上面设置注解

@RequestMapping("/user")

在方法的上面也设置一个注解@RequestMapping,请求的方式是Get

/*
    * 指定some.do的请求是get请求方式
    * */
    @RequestMapping(value = "/some.do",method = RequestMethod.GET)
    public ModelAndView dosome(HttpServletRequest request){
        //处理some.do的请求
    ModelAndView mv = new ModelAndView();
    //添加数据,框架在请求的最后当道request作用域 相当于setAttribute()
        mv.addObject("msg","欢迎使用SpringMVC"+request.getParameter("name"));
        mv.addObject("fun","执行的dosome方法");
        //指定视图 放到mv里
//        mv.setViewName("/WEB-INF/view/show.jsp");
        //视图解析器,框架会使用前缀和后缀,组成完整路径。
        mv.setViewName("show");
        return mv;

    }

POST方式请求处理

 @RequestMapping(value = "/o @RequestMapping(value = "/doveiw.do")
    public ModelAndView doveiw(@RequestParam(value ="name",required = true) String name ,
                               @RequestParam(value = "age" , required = false) Integer age){
        ModelAndView mv = new ModelAndView();

        mv.addObject("a",age);
        mv.addObject("n",name);
        mv.setViewName("view");
        return mv;

ModelAndView适合页面的转发操作和数据的操作一起的请求,如果单单只有页面的转发操作,用String作为返回值合适。

上面是处理的逐个请求,如果请求的参数是对象可以实现批量操作。首先创建jsp传递参数。

<p>使用java对象传递参数</p>
<form action="user/receiveobject.do" method="post">
    姓名:<input type="text" name="name">
    年龄:<input type="text" name="age">
    <input type="submit" name ="提交按钮">
</form>

在java的文件夹的下面创建一个student类,只有两个属性,并设置get和set方法。

public class Student {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    private String name;
    private  Integer age;
}

Controller创建一个方法,参数是创建一个类的对象作为参数,返回值是ModelAndView

 @RequestMapping(value = "/receiveobject.do")
    public ModelAndView doveiw(Student mystudent){
        ModelAndView mv = new ModelAndView();

        mv.addObject("myname",mystudent.getName());
        mv.addObject("myage",mystudent.getAge());
        mv.addObject("mystudent",mystudent);
        mv.setViewName("view");
        return mv;

    }

在index.jsp页面创建ajax异步请求:

首先导入jquery-3.4.1.min.js在webapp的文件夹的js文件夹的下面,并用javascript导入到jsp页面,

<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
    <script type="text/javascript">

创建一个按钮button发起ajax请求

<button id="btn">发起ajax请求</button>

ajax请求,触发点击事件,返回参数 是response的对象

$(function(){
 $("button").click(function () {
    // alert("button click");
    // ajax请求
     $.ajax({
         url:"user/get.do",
         data:{
             name:"zhangsan",
             age:28
         },
         type:"post",
         dataType:"json",
         success:function (resp) {
             alert(resp.name+" "+resp.age);

         }
     })

})
})

接下来是对ajax请求的操作函数

1.把从jsp页面赋予的参数值放到student的类中

2.导入jackson的依赖,用OdjectMapper类将student转为json格式

3.输出数据,响应请求

@RequestMapping(value = "/get.do",method = RequestMethod.POST)
    public void doReturnAjax(HttpServletResponse response, String name , Integer age) throws IOException {
        System.out.println("name" +name+ "age"+age);
        Student student = new Student();
        student.setName(name);
        student.setAge(age);
        String json = "";
        //把结果转到json格式
        if(student != null){
        ObjectMapper om = new ObjectMapper();
        json  = om.writeValueAsString(student);
        System.out.println("student转换,相应ajax的请求");
        }

//输出数据,响应请求
        response.setContentType("application/json;charset=utf-8");
        PrintWriter pw = response.getWriter();//创建一个pw的对象
        pw.println(json);
        pw.flush();//刷新
        pw.close();//关闭
    }

接下来是ajax请求的运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值