JSP传递值给servlet的方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP传递值给servlet的方式相关的知识,希望对你有一定的参考价值。

我jsp里有显示全部信息的列表。有个单个物品查询 我传到servlet后再传给jsp显示单个信息页面。
比如:
1 姓名 年龄 (查询);点击查询就可以显示单个信息
2 . . . . .
因为ID是自动生成的。所以传递的时候有点麻烦
能不能不用from表单传递给servlet 还有其他的方法么?
我ID可以通过get方法得到。
要是自己写URL
list.action?ID=<%out.print(u.getID());%>的话
servlet如何得到这个路径的url地址呢后面的ID号也不一定是固定的。
我用了个笨的要死的方法弄from action=“list.action”表单ID 提交进去
然后给servlet 判断list.action的话进行一些传递跳转
缺点是ID号页面上都看到了还是输入框的。

  jsp向servlet传值大致有这么几种情况。
  第一种超链接,在href=\'servletAction?id=xxx\'
  第二种form表单提交,当点击submit时,action="servletAction" method=\'get/post\'
  第三种就是利用ajax,url=\'servletActionz\',当然了,这里也有get和post两种情况,get直接在url后面加问号传参,post会把参数放在实体内容里面。
  最后在servlet那边 用 request.getParameter("参数名");就可以拿到了
参考技术A jsp属于前端页面层,Servlet属于逻辑控制层。
jsp传值给servlet,数据发生在request作用域,即HttpRequest对象。例如
String user = request.getparameter("jsp页面中的标签name");//切记这里是name属性,ID是取不到的。
如果是要servlet传值给jsp,就是在HttpResponse作用域。
response.setAttribute("user");
jsp对应取值为:$responseScope.user;
参考技术B 一步:为Form设置一个隐藏按钮,传递ID过去!
<input name="uid" type="hidden" value=“<%=u.getID()%>” />
第二步:在servlet中再getParameter uid。追问

那么我servlet如何判断URL地址是list.action?ID=呢,我设置了隐藏可是发现ID传过去servlet却不好判断了。servlet :if(url.equals("/list.action?ID=...............")这个不好添ID的啊。

追答

你这有点混乱了!
注意:
当表单以post方法提交时,你要编写doPost()部分代码;
当表单以get方法提交时,你要编写doGet()部分代码。
--------------
如果用URL list.action?ID=...,在doGet()中判断:
String ID = request.getParameter("ID"); if (ID.equals("...")) ...;
如果在Form中,建议页面用post提交,servlet用doPost()处理,数据更安全:
String ID = request.getParameter("ID"); if (ID.equals("...")) ...;//代码一致

追问

if(url.equals("/list.action"))
String ID=request.getParameter("ID");
request.setAttribute("ID", ID);
request.getRequestDispatcher("listtone.jsp").forward(request,
response);

我自己改好了,有时候tomcat缓存问题,总以为是没取到。
servlet我知道是doget和dopost from表单一般都是post 设置编码和其他的一些方法而已。
不过还是谢谢了。

本回答被提问者采纳
参考技术C 你这样传的话 后台可以要request接收到呀 String id=request.getParameter("ID") 要form传就是上面那哥们说的 可以弄个隐藏框 把id一起提交到后台 然后可以get到 你这个查询是模糊查询吧? 怎么要传id 参考技术D 1,给标签一个name然后servlet用request.getparampeter("name")
2,发送请求时传递参数也是可以的(直接传参数,或者json格式的参数)
其他的就不太了解了

servlet中能够相互传值吗

在网上怎么查不到相关的信息呢?
通过SERVLET_A从数据库中取得信息。
然后再跳转到另一个SERVLET_B中去、
再通过SERVLET_B跳转到一个页面中、
并且在这张页面中加载相关有效数据。
这样的思想能够实现吗?

Sverlet相互传值可以使用跳转的形式,总共有两种,如下:
1) redirect方式[效率不高]
request和response没有传给目标页面
response.sendRedirect("/a.jsp");
页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如:
response.sendRedirect("URL");跳转后浏览器地址栏变化。
这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递。
传值:HttpSession session =request.getSession();
session.setAttribute("bbbb", 1111111111);
取值:session.getAttribute("bbbb");

传值:RequestDispatcher rd =application.getRequestDispatcher("/queryResult.jsp?a="+000);
取值:request.getParameter("a")

2) forward方式[更多地使用此方法进行服务器端的跳转]
ServletContext application =this.getServletContext(); //this是这个页面
RequestDispatcher rd = application.getRequestDispatcher("/目标页面");
rd.forward(request, response);
Servlet页面跳转的路径是相对路径。forward方式只能跳转到本web应用中的页面上,跳转后浏览器地址栏不会变化。
使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute
传值:request.setAttribute("a", 00);
取值:request.getAttribute("a");

传值:HttpSession session =request.getSession();
session.setAttribute("bbbb", 1111111111);
取值:session.getAttribute("bbbb");

传值:RequestDispatcher rd =application.getRequestDispatcher("/queryResult.jsp?a="+000);
取值:request.getParameter("a");
getParameter()只能传递字符串,而setAttribute()/getAttribute()还可以传递对象
其次getParameter方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。
只能是页面发送到后台或者Web客户端传到Web服务器端
参考技术A session cookie

当cookie被禁用时可以用URL重写或隐藏表单域
参考技术B 可以,保存入session就可以咯。
reqeust也可以。

比如request.setAttribute("v1",v1);或者request.setParameter("v1",v1);方法

session.add();方法 //还是session.set();方法记不清了,总之就是这些个方法吧值放入session或request.在另一个页面:

request.getParameter("v1");//获得request中v1,具体的值就是你上面保存进去的本回答被提问者和网友采纳
参考技术C 用session保存 或者request保存咯!!

以上是关于JSP传递值给servlet的方式的主要内容,如果未能解决你的问题,请参考以下文章

怎么从servlet传递一个值,然后在一个jsp页面得到这个值

jsp button提交一个值到servlet

servlet获取jsp页面的日期值

jsp给frame传值

servlet中能够相互传值吗

jsp 怎么用java和jsp传值