1.url地址栏参数传递与绑定
(1)体会通过url地址栏参数的传递原理
①格式:一般采用key/value格式,例如:ip:端口号?参数1名称:参数1值&参数2名称:参数2值
②将请求参数串中的 value 值获取到之后,再进行类型转换,然后将转换后的值赋值给Controlle r类中方法的形参,这个过程就是参数绑定。
(2)练习通过url地址传递参数
总结:
①通过url传递的参数,只能到达第二个页面,没法保存,不能传到第三个页面。因为Uid的值发到UidController里面之后
System.out.println(Uid);会输出到控制台,而不是jsp页面中
mav.addObject("aa", Uid);把Uid的值赋给aa了 ,所以urlid里面请求aa的值是有输出结果的,但是UidController并没有把Uid给urlid.jsp,所以urlid接收不到
②page指令里面一定要记得加上isELIGgnored=”false”,这样jsp页面才能使用EL语句
困难:
刚开始不管是老师给的案例还是书上的案例我都运行不出来...
老师给的案例只运行的出来url页面,后面的urlid将aa和uid的值显示出来这一步一直都是404,可能是因为配置文件web.xml和spring-servlet.xml文件不一样的原因,后来用how2j网站上的第四个练习里面的案例才做出来。
2.表单参数的传递和绑定
(1)How2j网站上的案例
①先运行,看到效果再学习
注:因为addProject.jsp没有放在WEB-INF底下,所以没有被隐藏
//地址栏里面的:addProject?name=coke&price=2.5
②实体类Product
③addProduct.jsp添加商品
④ProductController
作用:创建一个Product对象,将addProduct中的数据传到该实体类对象的参数中,并将创建好的实体化对象根据页面需求在showProduct.jsp中显示出来
⑤showProduct.jsp
作用:通过EL表达式,调用实体类中的参数使得输入的参数值显示出来
⑥测试
(2)多值的传递和使用
①reg.jsp
name中的值对应实体类Reg里的形参,并将value里面的值传给形参
②RegController.java(控制器)
Import pojo.Reg;
导入实体类Reg
@RequestMapping("/regsubmit")
public ModelAndView reg(Reg reg)
准备一个reg方法映射/regsubmit,对应Reg.jsp里面form表单的action的值
③Reg.java
因为要传多值,所以给Reg类又设置一个参数hobbys用来存放每一个选中的hobby,最后在reglist输出的时候直接输出hobbys
④reglist.jsp
注意:这个地方的page指令我没有照着老师的复制
原指令:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
这一行代码好像是因为和配置文件对不上所以没法用这句代码,会报错
我改成了:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
就可以正常运行了。
后面去搜了原指令用不上的解决方法,如下:
⑤运行结果
3.计算器练习
①calculate.jsp
②CalculateController.java
困难:
这个页面让我纠结了很久,有一点不能理解的是为什么会把结果的计算放到控制器里面;
因为设置的单词长度有点长以及很多相关的单词,导致屡次打错界面运行不出来...后面重新检查了一遍就运行出来了;
刚开始不是很能理解,modelAndView.addObject("cal",cal);
后来看了一下之前的例子,mv.addObject("message", "Hello World!!!!");就很好理解了
③Calculate.java
④calresult.jsp
⑤测试运行