MikerNO_8 2024-06-05 20:00 采纳率: 0%
浏览 8

xml配置servle,映射不到servlet类

xml配置servlet;500,404问题
tomcat 9.0
jdk17.0
eclipse 2019
页面跳转先报错500和刷新404,弄了一天实在没辙了,各位看看什么问题:

目录结构:

img

初始页面:

img

500页面:

img

404页面:

img

NewFile.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="RegServlet" method="post">
    <table>
        <tr>
            <td>用户名:</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td>密     码:</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td>性别:</td>
            <td><input type="radio" name="sex" value="男" checked><input type="radio" name="sex" value="女"></td>
        </tr>
        <tr>
            <td>说    明:</td>
            <td><textarea name="note" rows=3 cols=30></textarea></td>
        </tr>
        <tr>
            <td><input type="submit" value="提交" name="submit"></td>
            <td><input type="reset" value="重置" name="reset"></td>
        </tr>
    </table>
</form>
</body>
</html>


RegServlet.java

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import reg.Register;

/**
 * Servlet implementation class RegServlet
 */
@WebServlet("RegServlet")
public class RegServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        Register register = new Register();
        response.setCharacterEncoding("utf-8");
        register.execute(request, response.getWriter());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("=======");
        Register register = new Register();
        response.setCharacterEncoding("utf-8");
        register.execute(request, response.getWriter());
    }

}

Register.java

package reg;

import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;

public class Register {
    private String username;
    private String password;
    private String sex;
    private String note;
    
    public void execute(HttpServletRequest request,PrintWriter out) {
        try {
            request.setCharacterEncoding("UTF-8");
            username=request.getParameter("username");
            password=request.getParameter("password");
            sex=request.getParameter("sex");
            note=request.getParameter("note");
            out.print("用户名:"+username+"<br>");
            out.print("密码:"+password+"<br>");
            out.print("性别:"+sex+"<br>");
            out.print("信息:"+note+"<br>");
            out.print("<br>");
            out.print("<a href='./NewFile.jsp'>返回</a>");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}

web.xml


```xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>test01</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>RegServlet</servlet-name>
    <servlet-class>servlet.RegServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>RegServlet</servlet-name>
    <url-pattern>/RegServlet</url-pattern>
</servlet-mapping>
</web-app>

```

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-05 20:00
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的信息,我将尝试帮助您解决遇到的问题。

    1. 检查web.xml配置: 您的web.xml配置看起来基本正确,但是请注意,您在<servlet>标签中缺少了结束标签</servlet>。这可能是导致500错误的原因之一。请确保您的web.xml配置如下所示:

      <servlet>
          <servlet-name>RegServlet</servlet-name>
          <servlet-class>servlet.RegServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>RegServlet</servlet-name>
          <url-pattern>/RegServlet</url-pattern>
      </servlet-mapping>
      
    2. 检查RegServlet类加载和实例化: 从您提供的500错误页面信息来看,出现了java.lang.classNotFoundException: servlet.RegServlet,这表明Tomcat无法找到RegServlet类。这可能是因为:

      • 您的web.xml<servlet-class>的值应该使用完全限定名,包括包名。您的配置中缺少了包名。正确的配置应该是<servlet-class>servlet.RegServlet</servlet-class>
      • 确保RegServlet.java位于正确的包路径下,并且已经编译生成了对应的.class文件。
    3. 检查NewFile.jsp页面提交: 您的NewForm.jsp页面中的表单提交地址是RegServlet,这与web.xml中配置的<url-pattern>相匹配。但是,您需要确保表单的action属性与web.xml中的<url-pattern>一致。如果web.xml中的<url-pattern>/RegServlet,则表单的action应该是:

      <form action="RegServlet" method="post">
      

      如果<url-pattern>/RegServlet/*,则表单的action应该是:

      <form action="RegServlet" method="post">
      
    4. 检查Register类处理请求和响应: 您的Register类代码看起来没有问题,但是请确保Register类在RegServlet中被正确实例化并调用。另外,检查Register类是否有任何可能抛出异常的方法调用,这可能会导致500错误。

    其他建议

    • 确保您的项目结构符合Java EE的标准,特别是WEB-INF/classes目录下应该有对应的包结构。
    • 清理并重新构建您的项目,以确保所有的.class文件都是最新的。
    • 检查Tomcat的日志文件,以获取更详细的错误信息。

    如果问题仍然存在,您可能需要提供更多的信息,或者考虑在开发环境中使用调试工具来逐步跟踪问题。希望这些建议能帮助您解决问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月5日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见