flag 和isAccept

来源:1-11 Servlet获取表单数据

qq_落花流水_3

2016-11-13 15:40

在reg.jsp里将isAccept改为flag后, 为什么RegServlet.java中if(request.getParameterValues("isAccept")!=null)不用该,改为flag后反而错误,这个isAccept难道不是对应表单中flag?

写回答 关注

3回答

  • qq_这是只仓鼠_0
    2017-03-05 23:44:16

    因为usebean是以javabean中的变量名为基础去使用的,与表单名无关,只是会自动将表单传递过来的同名变量中的值放进对应的javabean变量中而已,另外经过我的测试,将表单中的isAceept设置为flag后,由于name不对应,所以获取不到它的值,会报空指针异常,假如你之前获取成功了,应该是因为你没有刷新reg.jsp,直接返回并测试的。

  • Airly
    2016-11-19 18:30:36

    我也有这个疑问,然后我理了一下思路,你看看能不能帮到你,虽然说得有点啰嗦,但希望你跟着我的思路去对应看一下代码的位置,以及先后顺序,才能更好理解。

    1.先搞清楚每个页面及类的含义:

    reg.jsp —— 用户填写表单的界面

    RegServlet.java —— 暂时想象成 加工厂

    users.java —— 用户信息类(即javabean,想象成 模型

    userInfo.jsp —— 是servlert的dopost()重定向到的页面(及展示获取信息后的页面)

    这里的跳转顺序:

    reg.jsp ——  RegServlet.java ——userInfo.jsp 【在使用 加工厂的途中,调用模型,对模型进行写读

    ------------------------------------------------------------------------------------------------------------

    2.关于flag与isAcccept出现的位置 [以老师最后修改后测试成功来解释]

    reg.jsp —— <input name="isAccpet">

    RegServlet.java ——  String IsAccept  以及 if(IsAccept.indexOf("true")) {......} else{........}

    users.java ——  private boolean flag; 以及get/set方法为getFlag()/setFlag()

    userInfo.jsp ——  <jsp:getproperty name ="regUser"  property="flag">

    -------------------------------------------------------------------------------------

    3.结论

    我想你知道<jsp:getproperty >这个用法是获得javabean的属性值的吧

    所以<jsp:getproperty name ="regUser"  property="flag"> 

     这个flag值只对应users.java 这个javabean里面的变量名

    即这里的userInfo.jsp、users.java页面都是用flag

    而RegServlet类中的 if(request.getParameterValues("isAccept")!=null) 这里的isAccept是reg.jsp页面中表单提交过来的,所以这里的isAccept对应的是reg.jsp 页面中的 <input name="isAccpet">,而不是用flag



  • kirinzer
    2016-11-13 22:46:45

    课程里修改了一次Users类的属性的原因是这样,因为对于bool类型的属性,用编译器的简便方法生成对应的set方法时,并不像其他类型,会是set+属性名,而是is+属性名。为了避免理解问题,更换了属性名,并且重命名了set方法。isAccept只是在RegServlet中的doPost方法中声明的局部变量,一个String类型的变量,而if语句的作用是判断表单传递的参数是否为空,注意表单中条款项的 name也改为isAccept。

JAVA遇见HTML——Servlet篇

本门课程在JSP课程的基础上,深入介绍Servlet的基础知识

160615 学习 · 1029 问题

查看课程

相似问题