参数是如何在JSP和Servlet之间游走的

1 问题描述

我们在写jsp页面时,如果总是将java代码和html代码写在一起的话就会看着非常的乱,而且不利于我们发现代码的错误。因此我们将java代码和html代码分开来写,因此就有了Servlet这个东西。Servlet是一个很方便的功能,让我们的代码更有层次,而且更容易发现我们在开发中的错误。那么,将java代码和html代码分开的话,就肯定会涉及到Servlet和Jsp之间传递参数的问题,今天主要就讲讲参数是如何在JSP和Servlet之间游走的。

2 解决方案

Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp;使用request、response对象完成传值,具体实现如下:
1.JSP传值给Servlet
JSP传值给Servlet有几种形式:Form表单传值,url传值,其他方式传值
(1).form表单传值:
JSP页面有:<input type="text" name="username" value="1" id=" username" />,将username的id传到Sevlet中,在程序中如下:

String username=request.getParameter("username");

可获取jsp传username。
(2).url传值
比如这里的a标签的href属性与form标签的 action属性的值 “Servlet? username=1”,在 servlet同样用 request.getParameter("username")获取;
(3).java代码传值
java片段代码,servlet只能接到session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用request.getSession().getAttribute("testSession")获取 session内容。
2.Servlet传值给Jsp
具体实现如下:

java代码:String   a= "abccdefg "; 
             request.setAttribute( "ValueA ",a); 
             request.getRequestDispatcher( "网址/jsp页面 ").forward(request,response); 
jsp页面:
<%
String   s   =(String)request.getAttribute( "ValueA ");
%>

jsp页面就可以取出Servlet的值。从 servlet转到 jsp不外乎两种方法,重定向 和 url转发。
(1).重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url)方法。注意这里的 url前不带斜线 /,如response.sendRedirect(“test.jsp”)
(2).url转发 ( Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用

getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response);

而这里的url前需要带斜线 /,如:

getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response);

3 总结

让参数游走的方法也就那么几种只要我们熟练的掌握之后就能如鱼得水般的顺利。只要我们知道如何传递Servlet和Jsp之间的参数,那么我们做项目就容易很多了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值