servlet当中的页面转换
请问在servlet 当中怎么进行请求页面转换。比如我在servlet中经过判断后,决定转换到main.jsp页面。很急,请各位大侠多帮忙! 问题点数:100、回复次数:12Top
1 楼pengji(彭乃超)回复于 2002-04-12 09:36:39 得分 30
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class Servlet1 extends HttpServlet
{
private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS";
public void init() throws ServletException
{
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try {
ServletContext cont=this.getServletContext();
RequestDispatcher rd=cont.getRequestDispatcher("/main.jsp");
rd.forward(request,response);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
this.doGet(request,response);
}
public void destroy()
{
}
}Top
2 楼ahbill(阿漂)回复于 2002-04-12 09:59:02 得分 30
除了 forward方式,还可以使用sendRedirect("/main.jsp")方式
两种方式区别:
前种是直接链接到新页面
后种,是Servlet向客户端发新页面的URL,由浏览器向新页面请求。
Top
3 楼supershot(笨瓜)回复于 2002-04-12 10:16:07 得分 10
forward
sendRedirectTop
4 楼qu_shihong(孤峰)回复于 2002-04-12 10:53:39 得分 0
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class check extends HttpServlet
{
public void init() {
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
OutputStream output=response.getOutputStream();
PrintWriter out=new PrintWriter(output,true);
try{
out.println("test_1");
ServletContext cont=this.getServletContext();
out.println("test_3");
RequestDispatcher rd=cont.getRequestDispatcher ("http://10.201.1.120:8080/examples/jsp/date.jsp");
out.println("test_4");
rd.forward(request,response);
}
catch(EXCeption e)
{
Anything is wrong!
}
}
Top
5 楼qu_shihong(孤峰)回复于 2002-04-12 10:54:57 得分 0
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class check extends HttpServlet
{
public void init() {
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
OutputStream output=response.getOutputStream();
PrintWriter out=new PrintWriter(output,true);
try{
out.println("test_1");
ServletContext cont=this.getServletContext();
out.println("test_2");
RequestDispatcher rd=cont.getRequestDispatcher ("http://10.201.1.120:8080/examples/jsp/date.jsp");
out.println("test_3");
rd.forward(request,response);
}
catch(EXCeption e)
{
Anything is wrong!
}
}
_____________________________________________
错误提示:
test_1
test_2
test_3
Anything is wrong!
Top
6 楼qu_shihong(孤峰)回复于 2002-04-12 10:56:21 得分 0
这到底是怎么回事啊!我都快要疯了!Top
7 楼South_Wolf(南方客)回复于 2002-04-12 12:41:56 得分 0
getRequestDispatcher 换成 getNamedDispatcherTop
8 楼qu_shihong(孤峰)回复于 2002-04-12 13:32:51 得分 0
不好使!还有没有高人出招啊?拜托了!!!Top
9 楼dy1978(三毛)回复于 2002-04-12 13:44:44 得分 30
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class check extends HttpServlet
{
public void init() {
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
response.sendRedirect("http://10.201.1.120:8080/examples/jsp/date.jsp");
}
}
肯定好使
Top
10 楼yadg(阿俊)回复于 2002-04-12 13:47:23 得分 0
是不是路径的问题,你在try里面加一句:
if (rd==null) out.printlin("rd is null");
试一试如果rd是null的话就是路径出错了Top
11 楼qu_shihong(孤峰)回复于 2002-04-23 13:03:11 得分 0
这个问题我解决了,在进行页面转换的时候,response资源不能被占用。因为页面转换的时候要用到这个资源,也就是说把所有的out输出去掉就正常了!谢谢大家支持!Top
12 楼qu_shihong(孤峰)回复于 2002-04-23 13:05:38 得分 0
还有,三毛兄弟,你在用完response.sendRedirect之后一般都调用return 来结束程序.Top




