IntelliJ创建Web项目成功,但是访问不到Servlet

IntelliJ创建Web项目成功,但是访问不到Servlet

问题描述:

用IntelliJ自动生成了Web项目模板,其中index.jsp和HelloServlet.java代码如下

.jsp

相关代码:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="hello-servlet">Hello Servlet</a>
</body>
</html>

HelloServlet.java

相关代码:

package com.example.demo;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet("/hello-servlet")
//@WebServlet(name = "helloServlet", urlPatterns = "/hello-servlet") //value
public class HelloServlet extends HttpServlet {
private String message;

public void init() {
message = "Hello World!";
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");

// Hello
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>" + message + "</h1>");
out.println("</body></html>");
}

public void destroy() {
}
}

相关截图:

主页面成功访问,而Servlet无法访问

http://img1.sycdn.imooc.com//climg/602ca712099ca77f14960448.jpg

http://img1.sycdn.imooc.com//climg/602ca74c09c80b7f14140442.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,项目报错是运行时找不到HttpServlet类,如:

http://img1.sycdn.imooc.com//climg/603af91409be88df06470115.jpg

建议同学点击File->Project Structure,在modules中,查看是否添加了Tomcat。如:

http://img1.sycdn.imooc.com//climg/603afb33094b65b812500455.jpg

如果没有,建议点击右侧的“+”,选择Library,选择tomcat进行添加。

如果这里添加了tomcat,运行仍然报错,问一下同学使用的tomcat以及JDK的版本,可能是版本问题引起的报错。建议同学使用JDK1.8和tomcat8。

out文件夹下的web.xml文件代码并没有什么问题,可能由于IDEA没有正确识别而出现的错误提示,并不影响程序运行。

祝学习愉快~


好帮手慕小班 2021-02-27 10:19:25

同学你好,1、根据同学的描述,out包内含有Servlet类和web网页index.jsp,但查看同学贴出的代码,是target目录,并没有out目录。

http://img1.sycdn.imooc.com//climg/6039ab8c0905c82d05310582.jpg

    2、既然在web.xml进行配置servlet了,就要去掉@WebServlet()注解的内容,否则容易出现冲突。

http://img1.sycdn.imooc.com//climg/6039abae09c0d94306730761.jpg

建议同学检查一下如上提出的内容,修改后,重构项目重新启动再来试试。

http://img1.sycdn.imooc.com//climg/6039ac2609292a3d02410209.jpg

祝学习愉快!

  • 提问者 慕仰2259325 #1

    不好意思,尝试了以上方法,新建SimpleServlet类依然无法显示Servlet页面。

    1. 网站报错信息

        http://img1.sycdn.imooc.com//climg/603a6859099f6bea11210872.jpg

    2. out文件夹结构

    http://img1.sycdn.imooc.com//climg/603a68e6091552f206550505.jpg

    3.out内.xml文件报错信息

    http://img1.sycdn.imooc.com//climg/603a697d09854e9913690767.jpg

    第二个错误好像也是和实例化类有关,没有遇到过相似问题,请问老师怎么解决?

    2021-02-27 23:55:27
好帮手慕阿满 2021-02-19 16:24:46

同学你好,测试同学的代码并没有什么问题,建议检查一下配置,配置tomcat时是否导入war exploded,如:

http://img1.sycdn.imooc.com//climg/602f75b609009ba507250166.jpg

祝学习愉快~

  • 提问者 慕仰2259325 #1

    war包已部署,但是Servlet页面仍然找不到。请问什么原因。

    http://img1.sycdn.imooc.com//climg/6035f55e09b4d62405880332.jpg

    2021-02-24 14:43:15
  • 好帮手慕阿满 回复 提问者 慕仰2259325 #2

    同学你好,建议同学使用web.xml进行配置servlet,不使用@WebServlet()注解,查看能否访问servlet。如果还是不行,建议同学将项目结构展开截图贴一下。

    祝学习愉快~

    2021-02-24 16:15:52
  • 提问者 慕仰2259325 回复 好帮手慕阿满 #3

    可以访问主页,但无法访问Servlet。out包内含有Servlet类和web网页index.jsp。

    1. 项目结构

    http://img1.sycdn.imooc.com//climg/6038fbca09f32f2104270509.jpg

    2. xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <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-name>Servlet</servlet-name>
           <servlet-class>com.example.demo.Servlet</servlet-class>
       </servlet>
       <servlet-mapping>
           <servlet-name>Servlet</servlet-name>
           <url-pattern>/Servlet</url-pattern>
       </servlet-mapping>

    </web-app>

    3.Servlet类实现

    package com.example.demo;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.annotation.*;
    import java.io.IOException;

    @WebServlet(name = "Servlet", value = "/Servlet")
    public class Servlet extends HttpServlet {
    @Override
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.getWriter().println("Hello Word!");
       }

    @Override
       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
    }


    2021-02-26 21:49:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师