重定向的问题?

xsxiaobao 2003-02-23 08:56:23
我用
....
Bean1 b = new Bean1();
request.setAttribute("d", b.testXML());
response.sendRedirect(parserURL);
.....
我在JSP里引用request的值却没有,这是怎么回事,是不是不是这样传的.???

还有个问题,forward和上面那个有什么区别呀.?
急等,多谢!
...全文
47 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsxiaobao 2003-02-24
  • 打赏
  • 举报
回复
这是servlet的代码
----------------------------------------------------------------------------------
package xmlproject;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import testejb.*;
import xmlproject.*;

public class testServlet
extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
String parserURL =
"http://developer:7001/jstl/standard-examples/xml1/Parse.jsp";
//Initialize global variables
public void init() throws ServletException {
}

//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doPost(request, response);
}

//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// response.setContentType(CONTENT_TYPE);
String redirect=request.getParameter("redirect") ;
redirect="init";
if(redirect.equals("init") ){
try{
Bean1 b = new Bean1();
request.setAttribute("d", b.testXML());
request.setAttribute("a","a") ;
request.getRequestDispatcher(parserURL).forward(request,response);
// response.sendRedirect(parserURL);
//return;
}catch(Exception ex){
ex.printStackTrace() ;
}
}else if(redirect.equals("add") ){

response.sendRedirect(parserURL);
}else if(redirect.equals("upd")){
response.sendRedirect(parserURL);
}else if(redirect.equals("del")){
response.sendRedirect(parserURL);
}

}
//Clean up resources
public void destroy() {
}
// RequestDispatcher rd = this.getServletContext().getRequestDispatcher( "/servlet/ControlCenter?FunctionID=1021&flag=0&id=" + id );
//req.setAttribute("sqls",sqls);
//rd.forward( req, res );
//在jsp中的forward在servlet中对应的应该是这样的,可以把参数传过去。
//在req中还可以传一些别的对象。

}
----------------------------------------------------------------------------------
这是JSP的代码
----------------------------------------------------------------------------------
<%@ page contentType="text/html; charset=gb2312" import="java.util.*" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=GB2312">

<title>JSTL: XML Support -- Parse</title>
</head>
<body bgcolor="#FFFFFF">
<h3>Parse from Objects and URLs</h3>

<%
String str=(String)request.getAttribute("a");
out.print("a="+str);
%>
</body>
</html>
----------------------------------------------------------------------------------
全在这里了,高手过目一下!多谢.
xiaofenguser 2003-02-24
  • 打赏
  • 举报
回复
这样写没有错,把你转向的代码和接收的代码贴全一点看一下.
xsxiaobao 2003-02-24
  • 打赏
  • 举报
回复
楼上的大侠:
按照你上面这样做我的JSP代码需不需要另要写些什么呀.我现在的JSP里是这样写的:
<%
String str=(String)request.getAttribute("d");
out.print("d="+str);
%>
可是打出来d是null,这是怎么回事,我在servlet用最简单的设置:
request.setAttribute("d","this is d");
应该没道理出错呀,!
请指教!
xiaofenguser 2003-02-24
  • 打赏
  • 举报
回复
Bean1 b = new Bean1();
request.setAttribute("d", b.testXML());
response.sendRedirect(parserURL);
改成:
Bean1 b = new Bean1();
request.setAttribute("d", b.testXML());
request.getRequestDispatcher(parserURL).forward(request,response);
KevinChu 2003-02-24
  • 打赏
  • 举报
回复
UP
doodoofish 2003-02-24
  • 打赏
  • 举报
回复
这里应该用Forward,把request一起传递过去,否则当然在request里找不到了。

sendRedirect最好只用来切换网页;用到传送对象的时候,应当用Forward。
一是因为Forward能把request里的东西一起传递到目的URL。
二是因为Forward只在Server一段转递,不需要再经过网络上的一个回路,节省时间。而sendRedirect必须把信息再送回客户端,经由浏览器再解析重新发回服务器,在网络上整整绕了一大圈。


其实Forward是推荐的方法。
lkenshin 2003-02-24
  • 打赏
  • 举报
回复
无能为力,帮你up吧
xsxiaobao 2003-02-24
  • 打赏
  • 举报
回复
各位兄弟姐妹过来看看,帮帮忙呀.!
----------------------------------------------------------------------------------
xsxiaobao 2003-02-24
  • 打赏
  • 举报
回复
多谢风大哥,小弟在杭州混,主要是搞j2ee开发企业网站的,以后多多交流,谢谢.
xiaofenguser 2003-02-24
  • 打赏
  • 举报
回复
我在resin2.1.5下的测试例子(正常的,结果是显示"test"),你试一下看看,不知道会不会是服务器不同的原因!
//TPost.java
----------------------------------------------------------------------------
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TPost extends HttpServlet
{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
String url = "/2.jsp";
request.setAttribute("b", "test");
request.getRequestDispatcher(url).forward(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
doGet(request, response);
}
}
------------------------------------------------------------------------------
2.jsp
------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%
String b = (String)request.getAttribute("b");
out.print(b);
%>
xsxiaobao 2003-02-24
  • 打赏
  • 举报
回复
我试了.
还是没用!
xiaofenguser 2003-02-24
  • 打赏
  • 举报
回复
String parserURL =
"http://developer:7001/jstl/standard-examples/xml1/Parse.jsp";
应该是这个链接地址的原因,你写成String parserURL = "/jstl/standard-examples/xml1/Parse.jsp";
看一下.

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧