这里应该用Forward,把request一起传递过去,否则当然在request里找不到了。sendRedirect最好只用来切换网页;用到传送对象的时候,应当用Forward。
一是因为Forward能把request里的东西一起传递到目的URL。
二是因为Forward只在Server一段转递,不需要再经过网络上的一个回路,节省时间。而sendRedirect必须把信息再送回客户端,经由浏览器再解析重新发回服务器,在网络上整整绕了一大圈。
其实Forward是推荐的方法。
一是因为Forward能把request里的东西一起传递到目的URL。
二是因为Forward只在Server一段转递,不需要再经过网络上的一个回路,节省时间。而sendRedirect必须把信息再送回客户端,经由浏览器再解析重新发回服务器,在网络上整整绕了一大圈。
其实Forward是推荐的方法。
request.setAttribute("d", b.testXML());
response.sendRedirect(parserURL);
改成:
Bean1 b = new Bean1();
request.setAttribute("d", b.testXML());
request.getRequestDispatcher(parserURL).forward(request,response);
按照你上面这样做我的JSP代码需不需要另要写些什么呀.我现在的JSP里是这样写的:
<%
String str=(String)request.getAttribute("d");
out.print("d="+str);
%>
可是打出来d是null,这是怎么回事,我在servlet用最简单的设置:
request.setAttribute("d","this is d");
应该没道理出错呀,!
请指教!
----------------------------------------------------------------------------------
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>
----------------------------------------------------------------------------------
全在这里了,高手过目一下!多谢.
"http://developer:7001/jstl/standard-examples/xml1/Parse.jsp";
应该是这个链接地址的原因,你写成String parserURL = "/jstl/standard-examples/xml1/Parse.jsp";
看一下.
//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);
%>