質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

6383閲覧

javax.servlet.ServletException: javax.servlet.jsp.JspException:

l_l_l_l_l_l_l_l

総合スコア38

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2016/06/14 01:05

編集2016/06/14 01:42

###前提・実現したいこと

エラーが解決できません。 また、JSPの最後の行に「処理命令が閉じられていません」との エラーとJSPの <input type="hidden" value=${row.book_no} name="book_no" /> のvalueの一番右の}の部分にも黄色い波線が表示されてしまいます。

###発生している問題・エラーメッセージ

HTTPステータス 500 - javax.servlet.ServletException: javax.servlet.jsp.JspException: type 例外レポート メッセージ javax.servlet.ServletException: javax.servlet.jsp.JspException: 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: SELECT book.book_no,book.book_name,genre.genre_name, lend.lend_date,book.state FROM book LEFT JOIN lend ON book.book_no = lend.book_no LEFT JOIN user ON user.user_no = lend.user_no LEFT JOIN genre ON book.genre_no = genre.genre_no ORDER BY book.book_no; : Unknown column 'book.genre_no' in 'on clause' org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:454) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

###JSP

<%@ page contentType="text/html; charset=UTF-8" import="java.sql.*,javax.naming.*,javax.sql.*,java.text.*,java.util.Date,java.util.Calendar"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> <html> <sql:setDataSource var="db" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/Library" user="root" password="" /> <sql:query var="rs" dataSource="${db}"> SELECT book.book_no,book.book_name,genre.genre_name, lend.lend_date,book.state FROM book LEFT JOIN lend ON book.book_no = lend.book_no LEFT JOIN user ON user.user_no = lend.user_no LEFT JOIN genre ON book.genre_no = genre.genre_no <c:if test="${!empty param['genreNo']}"> where book.genre_no = ? <sql:param value="${param['genreNo']}" /> </c:if> ORDER BY book.book_no; </sql:query> <sql:query var="rs1" dataSource="${db}"> select * from genre </sql:query> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="css/Lending.css"> <title>書籍貸出画面</title> </head> <body> <h2>書籍貸出画面</h2> <br> <form method="POST" action="book_lend.jsp"> <p> ジャンル <select name="genreno"> <option value="">全て</option> <c:forEach var="row" items="${rs1.rows}"> <option value=${row.genre_no}>${row.genre_name}</option> </c:forEach> </select> <button style="color:white;background-color:D57200;" class="button" type="submit">絞り込む</button> </p> </form> <br> <table border="1"> <tr> <th>ID</th> <th>書籍名</th> <th>ジャンル</th> <th>返却予定日</th> <th>状態</th> <th>貸出/返却</th> </tr> <c:forEach var="row" items="${rs.rows}"> <tr> <td>${row.book_no}</td> <td>${row.book_name}</td> <td>${row.genre_name}</td> <td> <c:if test="${empty row.lend_date}">-</c:if> ${row.lend_date } </td> <td> <c:if test="${row.state == 2}" > <span class="fontRed">貸出不可</span> </c:if> <c:if test="${row.state == 1 }"> <c:if test="${empty row.lend_date}"> 貸出可能 </c:if> <c:if test="${!empty row.lend_date}"> <c:set var= "today" value="<%=new Date()%>"/> <c:if test="${today > row.lend_date}"> 返却遅延 </c:if> <c:if test="${today <= row.lend_date}"> 貸出中 </c:if> </c:if> </c:if> </td> <td> <c:if test="${empty row.lend_date}"> <c:if test="${row.state == 2}">-</c:if> <c:if test="${row.state == 1}"> <form method="post" action="book_lend"> <input type="hidden" value=${row.book_no} name="book_no" /> <INPUT style="color:white; background-color:D57200; width:60px; height:40px;" type="submit" value="貸出" /> </form> </c:if> </c:if> <c:if test="${!empty row.lend_date}"> <form method="get" action="book_lend"> <input type="hidden" value=${row.book_no} name="book_no" /> <INPUT style="color:white; background-color:AFD170; width:60px; height:40px;" type="submit" value="返却" /> </form> </c:if> </td> </c:forEach> </table> <form action="kanri_mypage.jsp"> <input style="color:white; background-color:D57200;" type="submit" name="mypage" value="TOPページ"> </form> </body> </html>

###servlet

package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.naming.Context; import javax.naming.InitialContext; 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 javax.servlet.http.HttpSession; import javax.sql.DataSource; @WebServlet("/book_lend") public class book_lend extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String bookNo = request.getParameter("book_no"); HttpSession session = request.getSession(); Boolean loginResult = (Boolean) session.getAttribute("loginResult"); Connection con = null; PreparedStatement ps = null; String sql = null; ResultSet rs = null; if(session.getAttribute("loginResult")!=null) { loginResult = (boolean)session.getAttribute("loginResult"); } if(loginResult) { try{ Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/mysql"); con = ds.getConnection(); sql = "delete from lend where book_no = ?"; ps = con.prepareStatement(sql); ps.setString(1, bookNo); ps.executeUpdate(); }catch(Exception e){ throw new ServletException(e); }finally{ try{ if(rs != null){ rs.close(); } if(con != null){ con.close(); } if(ps != null){ ps.close(); } }catch(Exception e){ } this.getServletContext().getRequestDispatcher("/book_lend.jsp").forward(request, response); } }else{ this.getServletContext().getRequestDispatcher("/book_lend.jsp").forward(request, response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String bookNo = request.getParameter("book_no"); HttpSession session = request.getSession(); Boolean loginResult = false; Connection con = null; PreparedStatement ps = null; String sql = null; ResultSet rs = null; if(session.getAttribute("loginResult")!=null) { loginResult = (boolean)session.getAttribute("loginResult"); } if(loginResult) { try{ Context initContext = new InitialContext(); DataSource ds = (DataSource) initContext .lookup("java:comp/env/jdbc/Library"); con = ds.getConnection(); sql = "insert into lend (lend_id,user_no,book_no,lend_date) values (?,?,?,cast((now() + interval 6 day) as date));"; ps = con.prepareStatement(sql); ps.setString(1, (String) session.getAttribute("user_no")); ps.setString(2, bookNo); ps.executeUpdate(); }catch(Exception e){ throw new ServletException(e); }finally{ try{ if(rs != null){ rs.close(); } if(con != null){ con.close(); } if(ps != null){ ps.close(); } }catch(Exception e){ } this.getServletContext().getRequestDispatcher("/book_lend.jsp").forward(request, response); } }else{ this.getServletContext().getRequestDispatcher("/book_lend.jsp").forward(request, response); } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2016/06/14 01:18

確認ですが、JSPの先頭行でimportの前に<%@ page がないように見えますがただのコピペミスですか?
guest

回答1

0

ベストアンサー

Unknown column 'book.genre_no' と言われていますが、これではないですか?
bookテーブルに、genre_no が無いのではないでしょうか?

投稿2016/06/14 02:22

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

l_l_l_l_l_l_l_l

2016/06/14 02:58

うっかりミスでした。 有難うございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問