当前位置: 首页 > 知识库问答 >
问题:

为什么在运行jsp时出现500错误

吴峰
2023-03-14

我最终得到了一个500的错误,这取决于stacktrace,这可能是一个数据格式错误,但我所有的变量都是字符串,所以我根本看不到错误在哪里。此外,我的连接jdbc很好,因为在调试模式下,我可以看到数据库的值,但一旦它进入JSP中,它就不再工作了。你能帮帮我吗?

  1. servlet
  2. JSP
  3. 豆类
  4. BDD连接
  5. 堆栈跟踪

我的servlet:

import java.io.IOException;

import bdd.LivresBDD;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import model.Livres;
/**
* Servlet implementation class test
*/

public class test extends HttpServlet {
 private static final long serialVersionUID = 1L;

 /**
  * Default constructor. 
  */
 public test() {
     // TODO Auto-generated constructor stub
 }

 
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     LivresBDD tableLivres = new LivresBDD();
     request.setAttribute("livre", tableLivres.recupererLivres());
     this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp").forward(request, response);
 }


 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     Livres livre = new Livres();
     livre.setTitre(request.getParameter("titre"));
     livre.setAuteur(request.getParameter("auteur"));
     livre.setGenre(request.getParameter("genre"));
    
    LivresBDD tableLivres = new LivresBDD();
    tableLivres.ajouterLivres(livre);
    
    request.setAttribute("livre", tableLivres.recupererLivres());
    
     this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp").forward(request, response);
 }

}

My jsp files :


<%@ page pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
 <head>
     <meta charset="utf-8" />
     <title>Test</title>
 </head>
 <body>
     <%@ include file="menu.jsp" %>
     <p>Bonjour à vous !</p>
     <p>
     <ul>
     <li value="${livre.titre}"></li>
     </ul>
 </body>
</html>

My beans : 

package model;

public class Livres {
 private String titre;
 private String auteur;
 private String genre;
 

 
 public String getTitre() {
     return titre;
 }
 
 public void setTitre(String titre) {
     this.titre = titre;
 }
 public String getAuteur() {
     return auteur;
 }
 
 public void setAuteur(String auteur) {
     this.auteur = auteur;
 }
 public String getGenre() {
     return genre;
 }
 
 public void setGenre(String genre) {
     this.genre = genre;
 }
}


My BDD connection :

package bdd;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;

import model.Livres;

public class LivresBDD {


 private Connection connexion;
 
 public List<Livres> recupererLivres() {
     List<Livres> livres = new ArrayList<Livres>();
     Statement statement = null;
     ResultSet resultat = null;

     loadDatabase();
     
     try {
         statement = connexion.createStatement();

         // Exécution de la requête
         resultat = statement.executeQuery("SELECT titre, auteur, genre FROM livres;");

         // Récupération des données
         while (resultat.next()) {
             String titre = resultat.getString("titre");
             String auteur = resultat.getString("auteur");
             String genre = resultat.getString("genre");
             
             Livres livre = new Livres();
             livre.setTitre(titre);
             livre.setAuteur(auteur);
             livre.setGenre(genre);
             
             livres.add(livre);
         }
     } catch (SQLException e) {
     } finally {
         // Fermeture de la connexion
         try {
             if (resultat != null)
                 resultat.close();
             if (statement != null)
                 statement.close();
             if (connexion != null)
                 connexion.close();
         } catch (SQLException ignore) {
         }
     }
     
     return livres;
 }
 
 private void loadDatabase() {
     // Chargement du driver
     try {
         Class.forName("com.mysql.jdbc.Driver");
     } catch (ClassNotFoundException e) {
     }

     try {
         connexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/bibliotheque", "root", "");
     } catch (SQLException e) {
         e.printStackTrace();
     }
 }
 
 public void ajouterLivres(Livres livre) {
     loadDatabase();
     
     try {
         PreparedStatement preparedStatement = connexion.prepareStatement("INSERT INTO livres(titre,auteur,genre) VALUES(?, ?, ?);");
         preparedStatement.setString(1, livre.getTitre());
         preparedStatement.setString(2, livre.getAuteur());
         preparedStatement.setString(3, livre.getGenre());
         
         preparedStatement.executeUpdate();
     } catch (SQLException e) {
         e.printStackTrace();
     }
 }
}


My stacktrace :


État HTTP 500 – Erreur interne du serveur

Type Rapport d'exception

message Une exception s'est produite lors du traitement de [WEB-INF/bonjour.jsp] à la ligne [13]

description Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête.

exception

org.apache.jasper.JasperException: Une exception s'est produite lors du traitement de [WEB-INF/bonjour.jsp] à la ligne [13]

10:         <p>Bonjour à vous !</p>
11:         <p>
12:         <ul>
13:         <li value="${livre.titre}"></li>
14:         </ul>
15:     </body>
16: </html>


Stacktrace:
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:611)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
 jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
 com.octest.servlets.test.doGet(test.java:32)
 jakarta.servlet.http.HttpServlet.service(HttpServlet.java:663)
 jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

cause mère

java.lang.NumberFormatException: For input string: "titre"
 java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
 java.base/java.lang.Integer.parseInt(Integer.java:652)
 java.base/java.lang.Integer.parseInt(Integer.java:770)
 jakarta.el.ListELResolver.coerce(ListELResolver.java:150)
 jakarta.el.ListELResolver.getValue(ListELResolver.java:67)
 org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:125)
 org.apache.el.parser.AstValue.getValue(AstValue.java:169)
 org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
 org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:709)
 org.apache.jsp.WEB_002dINF.bonjour_jsp._jspService(bonjour_jsp.java:141)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
 jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
 jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
 com.octest.servlets.test.doGet(test.java:32)
 jakarta.servlet.http.HttpServlet.service(HttpServlet.java:663)
 jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de ce serveur.
Apache Tomcat/10.0.4

共有1个答案

张茂勋
2023-03-14

在这种情况下,您必须从jstl中使用类似于 的迭代,例如:

下面是如何构建

  • 的示例

  •  类似资料:
    • 问题内容: 我目前正在开发具有XMLBeans绑定而不是默认JAXB绑定的Apache CXF Web服务。我正在使用Java 1.6编译和运行代码。我在运行时收到以下代码段的“ DOM Level 3 Not Implemented”错误: JBoss中显示的确切错误如下: 从上面的错误消息中,很明显,由于在运行时未找到DOM 3级API,因此getTextContent方法引起了异常。如何消除

    • 问题内容: 我进行了搜索,发现使用jdk 7的QuickTip:VerifyError : 如果您遇到以下类型的错误 那么一个简单的解决方案是添加以下默认JVM参数 如果像我一样在eclipse中进行操作,则转到Window-> Preferences-> Installed JREs->并添加默认参数。 此设置有什么作用?Oracle 刚刚提到它是具有StackMapTable属性的新型类型检查

    • 在TeamCity中运行MSpec构建步骤时,我在TeamCity日志中发现以下错误: 我已经对和MSpec config文件,但它似乎没有帮助。 MSpec运行程序正在本地引用构建代理上的编译DLL,该构建代理在Visual Studio中本地正确运行。有人能解释这个错误的含义以及我如何解决它吗?

    • 在错误日志中生成以下内容: PHP警告:文件\u获取\u内容(https://www.[URL].com)[function.file get contents]:无法打开流:HTTP请求失败!HTTP/1.1500/Applications/MAMP/htdocs/test中的内部服务器错误。第13行的php”; 但是,该站点在浏览器中运行良好。 我也试过使用cURL。我在日志文件中没有发现任何

    • 我正在用IntelliJ IDEA Ultimate制作一个Java web项目。我有一个类,它有一个方法,该方法接受两个字符串作为输入,查询数据库,并返回一个int值。(这是一个登录方法——接收用户名和密码——如果它们有效,它应该返回用户名的int,否则为0)。 我通过用main方法从Tester类中调用它来测试这个方法,它返回了预期值。然而,当从jsp页面调用这个方法时,它会给我的SQL驱动程

    • 运行单个测试时引发错误: 通过点击方法名称旁边的绿色三角形按钮启动测试。 但是如果你通过maven(生命周期)对整个项目进行测试- 要使用JUnit,需要使用以下依赖项: 负责这个项目的其他团队成员(一个存储库,不同的分支)没有这样的问题。是什么导致了这个错误?使用了IDE-IntelliJ IDEA UPD:我什么都试过了。删除。idea文件夹没有效果,也没有重新下载所有依赖项。清除缓存也没有效