菜鸟求问:访问一个servlet,为什么会跳去下载页面??
RT.....
Welcome.html:
- HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>Welcome you!</title> </head> <body> <form action="welcome" method="get"> 请输入用户名:<input type="test" name="user" > <input type="submit" value="提交"> <form> </body></html>
Welcome.java:
- Java code
import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Welcome extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String user=req.getParameter("user"); String welcomeInfo="Welcome you,"+user; resp.setContentType("test/html"); PrintWriter out=resp.getWriter(); out.println("<html><head><title>"); out.println("Welcome Page"); out.println("</title></head>"); out.println("<body>"); out.println(welcomeInfo); out.println("</body></html>"); out.close(); }}web.xml:
- XML code
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>helloworld</servlet-name> <servlet-class>SimpleHello</servlet-class> </servlet> <servlet> <servlet-name>welcome</servlet-name> <servlet-class>Welcome</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>welcome</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping></web-app>
访问:localhost:8080/ch06/welcome,直接跳到下载页面...下载那个welcome的文件,这是什么情况??
PS:web.xml里面的hello能成功访问,即访问localhost:8080/ch06/hello能成功跳转(有一个对应的servlet),文件都是自己建立的,没有用IDE。
[解决办法]
在servlet处理的welcome中加上resposne.sendRedirect("welcome.jsp");这段代码即可。
它的意思是响应跳转到某个页面。
[解决办法]
首先,你要清楚你的servlet并没有指向和返回任何页面,只是输出流,所以你提示下载文件是正常的,虽然上面有人提供了 请求重定向,但
是无论是forward方法还是sendRedirect方法调用前面都不能有PrintWriter输出到客户端。
forward方法报错: java.lang.IllegalStateException: Cannot forward after response has been committed
sendRedirect报错:java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
因此我的建议是你自己建一个页面,result.jsp(此页面与welcom.jsp 在同一目录下就好)