+++
+++
+++
一、想法
jsp页面点击按钮,触发这个servlet;然后servlet返回一个参数(name)到jsp页面。
二、问题
1、看图二的资料,我的理解是服务器对请求做出响应,那么应该是在response上做出处理,为什么setAttribute这个方法在request上呢?而且现在jsp那里也识别不出来?
2、如果要实现我的想法,请问该怎么做?
+++
第一次更新:
第一个问题,request.setAttribute 是在请求域里面加了一个请求的参数,用来在同一个request周期中保存变量使用。比如servlet调用后,推出JSP页面,这是一个request周期,如果在Jsp页面需要servlet中的一些 处理结构,就从request.getAttribute中获取。
第二个问题,response 是没有 setAttribute 的,只有 Session 和 Request 对象有,response 是响应结果,直接返回指定类型的响应数据给前台,
如果是 html/text 格式,前台直接解释回显了。如果是 json 格式需要二次处理。
至于为什么不在 response 处理,它就是返回响应结果的,所以不存在保存临时变量这种操作。
request和response都有attribute
你可以在 request 上设置 attribute,但是这没什么用,如你所说,要让用户得到,得在response上设置。
request上设置attribute在有些情况下有用,比如说实现过滤器,或者服务器端转移,这些场景,在最终处理之前,可以附加一些参数。
servlet 四大域对象 page request session application 都有对应的set/get Attribute方法
①page里的变量没法从index.jsp传递到test.jsp,只要页面跳转了,它们就不见了。
②request里的变量可以跨越forward前后两页。但是只要刷新页面,它们就重新计算了。(jsp页面通过转发可以传递保存的变量 要是重定向就不行)
③session和application的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这个页面,session里的变量就重新计算了。application里的变量一直在累加,除非你重启Tomcat,否则它会一直变大。
你这边java代码中都没有用跳转jsp