有关jsp跳转的问题,一个jsp页面如何一加载主动向servlet发送请求并接收应答并显示接收到的数据 50
有个问题研究来研究去没研究明白:我有个jsp页面,来显示数据库中的数据,目的是一进这个页面就显示好,有一种方法是在right.jsp页面里面调用处理数据的model来显示...
有个问题 研究来研究去没研究明白:我有个jsp页面,来显示数据库中的数据,目的是一进这个页面就显示好,有一种方法是在right.jsp页面里面调用处理数据的model来显示,但是我不想把业务逻辑放到right.jsp中,想放到servlet里去调用model处理,再回显给jsp;棘手的是,这个right.jsp是在主页里通过jsp include page引入的……单独通过servlet访问这个right.jsp没问题,可我想在一访问主页是index.jsp时就让right.jsp去向servlet发送请求,并回转数据给自己显示出来。
在servlet中的处理代码如下
if(flag.equals("show")){//标志位来判断从right.jsp传来的请求是要做什么操作
//接收right页传来的pageNow参数及指定的pageSize,来显示页面
try{
ArrayList<GoodsBean> al = new ArrayList<GoodsBean>();
s_pageNow = request.getParameter("pageNow");
if(s_pageNow!=null){
pageNow = Integer.parseInt(s_pageNow);
}
al = gbbo.getGoodsByPage(pageNow, pageSize);
request.setAttribute("goods", al);
System.out.println("执行到此");
request.getRequestDispatcher("right.jsp").forward(request, response);
下面是right.jsp的头代码
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//此处抛出空指针异常,我知道是没有穿参数的原因,我单独在浏览器里访问servlet并加上参数可以正常访问right.jsp,就是不知道怎么才能让right.jsp一加载就自己取访问servlet并给自己回显
ArrayList<GoodsBean> al = (ArrayList<GoodsBean>)request.getAttribute("goods");
//得到共有多少页
int pageCount = (Integer)request.getAttribute("pageCount");
%> 展开
在servlet中的处理代码如下
if(flag.equals("show")){//标志位来判断从right.jsp传来的请求是要做什么操作
//接收right页传来的pageNow参数及指定的pageSize,来显示页面
try{
ArrayList<GoodsBean> al = new ArrayList<GoodsBean>();
s_pageNow = request.getParameter("pageNow");
if(s_pageNow!=null){
pageNow = Integer.parseInt(s_pageNow);
}
al = gbbo.getGoodsByPage(pageNow, pageSize);
request.setAttribute("goods", al);
System.out.println("执行到此");
request.getRequestDispatcher("right.jsp").forward(request, response);
下面是right.jsp的头代码
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//此处抛出空指针异常,我知道是没有穿参数的原因,我单独在浏览器里访问servlet并加上参数可以正常访问right.jsp,就是不知道怎么才能让right.jsp一加载就自己取访问servlet并给自己回显
ArrayList<GoodsBean> al = (ArrayList<GoodsBean>)request.getAttribute("goods");
//得到共有多少页
int pageCount = (Integer)request.getAttribute("pageCount");
%> 展开
4个回答
展开全部
比如你的servlet地址是 HelloSer
1可以用超链接<a href="/XXX/HelloSer?参数。。"/>
2也可以用表单<form action="/HelloSer"/> 表单里面的参数都会通过点击submit按钮时提交
3另外也可以用jsp的<c:url>标签
1可以用超链接<a href="/XXX/HelloSer?参数。。"/>
2也可以用表单<form action="/HelloSer"/> 表单里面的参数都会通过点击submit按钮时提交
3另外也可以用jsp的<c:url>标签
追问
超链接需要去点啊……表单至少也得需要回车一下才会提交……right.jsp是作为主页的一个显示区域
追答
你好,据我所知 include page 可以带参数的。你试试看
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样你要多写一个jsp了,如首页index.jsp里面用如:<jsp:include page=”right.jsp” flush=”true” />的标签引用另一个要经过servlet处理过后的jsp,如果有参数你还可以这样设置
<jsp:include page=” 你要反问的jsp路径“ flush=”true” >
<jsp:param name=”fitstParamer” value=”firstValue”>
<jsp:param name=”lastParamer” value=”lastValue”>
</jsp:include>
原因是这样的,include行为元素是在请求处理阶段执行的(此处要对 请求处理阶段进行说明一下,Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这 个阶段我们就称为请求处理阶段,所以在我们作include行为元素引入页面时,实际只是引用了right.jsp这个文件被转化并被编译后产生的servlet类文件,重点是就在这个servlet中可以执行访问数据库的操作后把执行的结果 返回到index.jsp页面显示。所以这是要在index.jsp引用include标签才能达到你要的效果。明白了吧?。。
<jsp:include page=” 你要反问的jsp路径“ flush=”true” >
<jsp:param name=”fitstParamer” value=”firstValue”>
<jsp:param name=”lastParamer” value=”lastValue”>
</jsp:include>
原因是这样的,include行为元素是在请求处理阶段执行的(此处要对 请求处理阶段进行说明一下,Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这 个阶段我们就称为请求处理阶段,所以在我们作include行为元素引入页面时,实际只是引用了right.jsp这个文件被转化并被编译后产生的servlet类文件,重点是就在这个servlet中可以执行访问数据库的操作后把执行的结果 返回到index.jsp页面显示。所以这是要在index.jsp引用include标签才能达到你要的效果。明白了吧?。。
追问
有一个参数是容器……
追答
什么?能不能具体点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
跳转有两种方式,重定向与转发。
重定向可以使用httpservletresponse对象
如
response.sendredirect(\"xxx.jsp\");
//参数为url地址
上面方法如同js的location.href=\"xxx.jsp\";
转发使用httpservletrequest对象
request.getrequestdispatcher(\"xxx.jsp\").forward(request,
response);
转发则把请求交给jsp页来处理
重定向可以使用httpservletresponse对象
如
response.sendredirect(\"xxx.jsp\");
//参数为url地址
上面方法如同js的location.href=\"xxx.jsp\";
转发使用httpservletrequest对象
request.getrequestdispatcher(\"xxx.jsp\").forward(request,
response);
转发则把请求交给jsp页来处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询