编译MessageServlet Servlet程序时遇到错误,请求协助排查
问题排查与修复方案
先贴出你提供的代码方便对照:
import javax.Servlet.GenericServlet; import javax.Servlet.ServletRequest; import javax.Servlet.ServletResponse; import javax.Servlet.ServletException; import java.io.*; public class MessageServlet extends GenericServlet { public void service(ServletRequest request,ServletResponse response)throws ServletException,IOException { PrintWriter out=res.getWriter(); out.println("<h1`enter code here`>HIIIIIIIIIIIII</h1>"); out.close(); } }
我帮你找出了几个导致编译失败的具体问题,对应修复方式如下:
- 包名大小写错误:Java包名严格区分大小写,Servlet API的正确包名是
javax.servlet(全小写的servlet),你写成了javax.Servlet(大写S),这会让编译器找不到核心的Servlet类,直接触发编译错误。 - 变量名拼写错误:获取输出流时你用了
res.getWriter(),但方法参数里的响应对象明明叫response,这里改成response.getWriter()就能解决“找不到符号res”的问题。 - 输出内容语法混乱:
out.println里的字符串混入了多余的enter code here和反引号,而且如果想在页面渲染出<h1>标题,不需要把<转义成<(转义后只会显示文本<h1>而非标题)。正确写法应该是out.println("<h1>HIIIIIIIIIIIII</h1>");。
修复后的完整代码:
import javax.servlet.GenericServlet; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.ServletException; import java.io.*; public class MessageServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("<h1>HIIIIIIIIIIIII</h1>"); out.close(); } }
额外提个小建议:实际开发中更推荐继承HttpServlet而非GenericServlet,它针对HTTP请求做了更贴合Web场景的封装,用起来会更顺手~
内容的提问来源于stack exchange,提问作者p.srikar
相关产品推荐
相关产品推荐

