第二天的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请求的运行结果