Java Web开发问题:res.getWriter输出显示在Eclipse控制台而非网页
解决Servlet输出到控制台而非网页的问题
首先咱们得弄明白为啥结果会跑到Eclipse控制台里——核心问题是你的AddServlet没有和表单提交的add路径建立映射关系,服务器不知道当用户提交到add时要调用你的Servlet处理请求。另外如果直接运行Servlet类(不是通过Tomcat服务器部署运行),容器不会初始化HttpServletRequest和HttpServletResponse,这种情况大概率是映射没配置对,请求根本没走到Servlet里,才会出现输出错位的情况。
下面是具体的解决步骤:
方法1:使用@WebServlet注解配置映射(推荐,Servlet 3.0+支持)
直接在AddServlet类上添加注解,指定映射路径为/add,这样表单的action="add"就能准确匹配到对应的Servlet:
package com.telusko; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/add") // 新增注解,绑定映射路径 public class AddServlet extends HttpServlet { public void service(HttpServletRequest req , HttpServletResponse res ) throws IOException { int i= Integer.parseInt(req.getParameter("num1")); int j= Integer.parseInt(req.getParameter("num2")); int k = i+j; PrintWriter out = res.getWriter(); // 给输出加HTML结构,让浏览器正常渲染页面 out.println("<html><body>"); out.println("<h3>Result is :" + k + "</h3>"); out.println("</body></html>"); } }
方法2:在web.xml中配置Servlet映射(传统兼容方式)
如果你的项目不支持Servlet 3.0+,可以在WEB-INF/web.xml文件中添加如下配置:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 注册Servlet --> <servlet> <servlet-name>AddServlet</servlet-name> <servlet-class>com.telusko.AddServlet</servlet-class> </servlet> <!-- 绑定映射路径 --> <servlet-mapping> <servlet-name>AddServlet</servlet-name> <url-pattern>/add</url-pattern> </servlet-mapping> </web-app>
正确运行流程
- 将Web项目部署到Tomcat服务器
- 启动Tomcat服务
- 在浏览器中访问你的index页面(示例路径:
http://localhost:8080/你的项目名/index.html) - 输入两个数字并提交,就能在跳转后的网页上看到计算结果了
内容的提问来源于stack exchange,提问作者Ashwini Maurya
相关产品推荐
相关产品推荐

