私は俳優の名字と姓を取り、所有しているすべての映画タイトルをリストするJava Webアプリケーションを作成しようとしています私は、NetBeansと一緒にGlassFishサーバー4.1.1 とMySQLコネクタ5.1.39 を使用していますHTTPステータス500:org.apache.jasper.JasperException:java.lang.NullPointerException
。で行動し、これは私のstarttingページindex.jspを
<%--
Document : index
Created on : Jul 15, 2016, 11:27:47 AM
Author : akhilb1
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<form name="myForm" action="display.jsp" method="POST">
<table border="0">
<tbody>
<tr>
<td>First name :</td>
<td><input type="text" name="first" value="" size="50" /></td>
</tr>
<tr>
<td>Last Name :</td>
<td><input type="text" name="last" value="" size="50" /></td>
</tr>
</tbody>
</table>
<input type="reset" value="Clear" name="clear" />
<input type="submit" value="Submit" name="submit" />
</form>
</body>
</html>
であり、これは8.1
をIDE私のdisplay.jspページこれはindex.jspのは
<%--
Document : display
Created on : Jul 15, 2016, 11:38:53 AM
Author : akhilb1
--%>
<%@page import="java.sql.*"%>
<% Class.forName("com.mysql.jdbc.Driver");%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%!
public class Actor{
String URL="jdbc:mysql://localhost:3306/sakila";
String USERNAME="root";
String PASSWORD="admin";
Connection connection =null;
PreparedStatement selectActors=null;
ResultSet resultSet = null;
public Actor(){
try {
connection=DriverManager.getConnection(URL,USERNAME,PASSWORD);
selectActors =connection.prepareStatement(
"SELECT a.first_name,a.last_name,c.title "
+"FROM actor a,film_actor b, film c"
+"WHERE a.first_name=?"
+"AND a.last_name=?"
+"AND a.actor_id=b.actor_id"
+"AND b.film_id=c.film_id");
}catch (SQLException e){
}
}
public ResultSet getACtors(String first,String last){
try {
selectActors.setString(1,first);
selectActors.setString(2,last);
resultSet=selectActors.executeQuery();
}catch (SQLException e){
}
return resultSet;
}
}
%>
<%
String firstName= new String();
String lastName= new String();
if(request.getParameter("first")!=null)
{
firstName= request.getParameter("first");
}
if(request.getParameter("last")!=null)
{
lastName= request.getParameter("last");
}
Actor actor = new Actor();
ResultSet actors= actor.getACtors(firstName,lastName);
%>
<table border="1">
<tbody>
<tr>
<td>First Name :</td>
<td>Last Name :</td>
<td>Title</td>
</tr>
<% while (actors.next()) { %>
<tr>
<td><%= actors.getString("first_name") %></td>
<td><%= actors.getString("last_name") %></td>
<td><%= actors.getString("title") %></td>
</tr>
<% } %>
</tbody>
</table>
</body>
</html>
にリクエストを送信するために、私は、インストール時にてSakilaでのmysqlによって私たちに与えられているデフォルトのデータベースを使用しています。
ファイルの両方が正しく をコンパイルしているが、私は、送信ボタンを打つとき、私は HTTPステータス500取得 -
Warning: StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.display_jsp._jspService(display_jsp.java:133)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
at java.lang.Thread.run(Thread.java:745)
がどのようにあるサーバーから内部サーバーエラーに
type Exception report
messageInternal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
root cause
java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.
GlassFish Server Open Source Edition 4.1.1
ログをこのエラーを解決することは可能です。 はここ
がdisplay_jsp.javapackage org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.sql.*;
public final class display_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
public class Actor{
String URL="jdbc:mysql://localhost:3306/sakila";
String USERNAME="root";
String PASSWORD="admin";
Connection connection =null;
PreparedStatement selectActors=null;
ResultSet resultSet = null;
public Actor(){
try {
connection=DriverManager.getConnection(URL,USERNAME,PASSWORD);
selectActors =connection.prepareStatement(
"SELECT a.first_name,a.last_name,c.title "
+"FROM actor a,film_actor b, film c"
+"WHERE a.first_name=?"
+"AND a.last_name=?"
+"AND a.actor_id=b.actor_id"
+"AND b.film_id=c.film_id");
}catch (SQLException e){
}
}
public ResultSet getACtors(String first,String last){
try {
selectActors.setString(1,first);
selectActors.setString(2,last);
resultSet=selectActors.executeQuery();
}catch (SQLException e){
}
return resultSet;
}
}
private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
private static java.util.List<String> _jspx_dependants;
private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
public java.util.List<String> getDependants() {
return _jspx_dependants;
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType("text/html;charset=UTF-8");
response.setHeader("X-Powered-By", "JSP/2.3");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
_jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector) application.getAttribute("com.sun.appserv.jsp.resource.injector");
out.write('\n');
out.write('\n');
Class.forName("com.mysql.jdbc.Driver");
out.write("\n");
out.write("\n");
out.write("<!DOCTYPE html>\n");
out.write("<html>\n");
out.write(" <head>\n");
out.write(" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
out.write(" <title>JSP Page</title>\n");
out.write(" </head>\n");
out.write(" <body>\n");
out.write(" <h1>Hello World!</h1>\n");
out.write(" ");
out.write("\n");
out.write(" ");
String firstName= new String();
String lastName= new String();
if(request.getParameter("first")!=null)
{
firstName= request.getParameter("first");
}
if(request.getParameter("last")!=null)
{
lastName= request.getParameter("last");
}
Actor actor = new Actor();
ResultSet actors= actor.getACtors(firstName,lastName);
out.write("\n");
out.write(" <table border=\"1\">\n");
out.write(" \n");
out.write(" <tbody>\n");
out.write(" <tr>\n");
out.write(" <td>First Name :</td>\n");
out.write(" <td>Last Name :</td>\n");
out.write(" <td>Title</td>\n");
out.write(" </tr>\n");
out.write(" ");
while (actors.next()) {
out.write("\n");
out.write(" <tr>\n");
out.write(" <td>");
out.print(actors.getString("first_name"));
out.write("</td>\n");
out.write(" <td>");
out.print(actors.getString("last_name"));
out.write("</td>\n");
out.write(" <td>");
out.print(actors.getString("title"));
out.write("</td>\n");
out.write(" </tr>\n");
out.write(" ");
}
out.write("\n");
out.write(" </tbody>\n");
out.write(" </table>\n");
out.write("\n");
out.write(" </body>\n");
out.write("</html>\n");
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
out.clearBuffer();
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}
jspのどの行が共有コードを使用してnullポインタ例外をスローしているかを分析するのは難しいでしょう。サーバーのキャッシュされたjspの場所にアクセスし、display_jsp.javaの133行にあるものを共有できますか? – amit2091
JSPでビジネス・ロジックを使用しないでください。コードをヘルパークラスに入れて、デバッグするのがずっと簡単です。 –
もうdisplay_jsp.javaコードも追加しました –