csdn_sqj
2020-05-04 16:05
采纳率: 60.3%
浏览 357
已采纳

servlet(extends HttpServlet) 和 jsp 的两个问题

图片说明
+++
图片说明
+++

图一是我目前遇到的问题

图二是我在网上看到的资料

+++

一、想法
jsp页面点击按钮,触发这个servlet;然后servlet返回一个参数(name)到jsp页面。
二、问题
1、看图二的资料,我的理解是服务器对请求做出响应,那么应该是在response上做出处理,为什么setAttribute这个方法在request上呢?而且现在jsp那里也识别不出来?
2、如果要实现我的想法,请问该怎么做?

麻烦两个问题一起解答,不然很难给分

+++
第一次更新:
图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 毕小宝 2020-05-04 20:40
    已采纳

    第一个问题,request.setAttribute 是在请求域里面加了一个请求的参数,用来在同一个request周期中保存变量使用。比如servlet调用后,推出JSP页面,这是一个request周期,如果在Jsp页面需要servlet中的一些 处理结构,就从request.getAttribute中获取。

    第二个问题,response 是没有 setAttribute 的,只有 Session 和 Request 对象有,response 是响应结果,直接返回指定类型的响应数据给前台,
    如果是 html/text 格式,前台直接解释回显了。如果是 json 格式需要二次处理。

    至于为什么不在 response 处理,它就是返回响应结果的,所以不存在保存临时变量这种操作。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2020-05-04 16:10

    request和response都有attribute
    你可以在 request 上设置 attribute,但是这没什么用,如你所说,要让用户得到,得在response上设置。
    request上设置attribute在有些情况下有用,比如说实现过滤器,或者服务器端转移,这些场景,在最终处理之前,可以附加一些参数。

    评论
    解决 无用
    打赏 举报
  • x060508 2020-05-05 10:57

    servlet 四大域对象 page request session application 都有对应的set/get Attribute方法

    ①page里的变量没法从index.jsp传递到test.jsp,只要页面跳转了,它们就不见了。

    ②request里的变量可以跨越forward前后两页。但是只要刷新页面,它们就重新计算了。(jsp页面通过转发可以传递保存的变量 要是重定向就不行)

    ③session和application的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这个页面,session里的变量就重新计算了。application里的变量一直在累加,除非你重启Tomcat,否则它会一直变大。 

    你这边java代码中都没有用跳转jsp

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题