前提・実現したいこと
スッキリわかる サーブレット&JSP入門 第2版にて登場した、どこつべと言うプログラムを組んでいる。
どういうプログラムかというと、ツイッターのようなものである
しかし、教科書を読みながら組んでいたがエラーが出てします。
自分のスキルでは解決できないと思い質問する。
発生している問題・エラーメッセージ
lang
1メッセージ An exception occurred processing [WEB-INF/jsp/main.jsp] at line [27] 2 3説明 The server encountered an unexpected condition that prevented it from fulfilling the request. 4 5例外 6 7org.apache.jasper.JasperException: An exception occurred processing [WEB-INF/jsp/main.jsp] at line [27] 8 924: <% if(errorMsg!=null){ %> 1025: <p><%= errorMsg %></p> 1126: <% } %> 1227: <% for(Mutter mutter:mutterList){ %> 1328: <p><%= mutter.getUserName() %>:<%= mutter.getText() %></p> 1429: <% } %> 1530: </body> 16 17 18Stacktrace: 19 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:593) 20 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:482) 21 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) 22 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) 23 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 24 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 25 servlet.Main.doGet(Main.java:48) 26 javax.servlet.http.HttpServlet.service(HttpServlet.java:634) 27 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 28 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 29原因 30 31java.lang.NullPointerException 32 org.apache.jsp.WEB_002dINF.jsp.main_jsp._jspService(main_jsp.java:155) 33 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 34 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 35 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444) 36 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) 37 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) 38 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 39 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 40 servlet.Main.doGet(Main.java:48) 41 javax.servlet.http.HttpServlet.service(HttpServlet.java:634) 42 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 43 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 44注意 原因のすべてのスタックトレースは、のログに記録されています
該当のソースコード
言語は、java,jsp,サーブレット
ソースコード
MutterDAO.java
java
1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9import java.util.List; 10 11import model.Mutter; 12 13public class MutterDAO { 14private final String url="jdbc:postgresql://localhost:5432/docotsubu"; 15private final String user="postgres"; 16private final String pass="password"; 17 18public List<Mutter> findAll(){ 19 List<Mutter> mutterList=new ArrayList<>(); 20 21 22 23try(Connection conn=DriverManager.getConnection(url,user,pass)){ 24 String sql="SELECT id,text FROM mutter ORDER BY id DESC"; 25 PreparedStatement pStmt=conn.prepareStatement(sql); 26 27 ResultSet rs=pStmt.executeQuery(); 28 29 while(rs.next()) { 30 int id=rs.getInt("id"); 31 String userName=rs.getString("name"); 32 String text=rs.getString("text"); 33 Mutter mutter=new Mutter(id,userName,text); 34 mutterList.add(mutter); 35 } 36 37 38}catch(SQLException e) { 39 e.printStackTrace(); 40 return null; 41} 42return mutterList; 43} 44public boolean create(Mutter mutter) { 45 46 try(Connection conn=DriverManager.getConnection(url,user,pass)){ 47 String sql="INSERT INTO mutter(name,text) VALUES(?,?)"; 48 PreparedStatement pStmt=conn.prepareStatement(sql); 49 pStmt.setString(1, mutter.getUserName()); 50 pStmt.setString(2,mutter.getText()); 51 52 53 int result=pStmt.executeUpdate(); 54 if(result!=1) { 55 return false; 56 } 57 58 }catch(SQLException e) { 59 e.printStackTrace(); 60 return false; 61 } 62 return true; 63} 64} 65
GetMutterListLogic.java
java
1package model; 2 3import java.util.List; 4 5import dao.MutterDAO; 6 7public class GetMutterListLogic { 8public List<Mutter> execute(){ 9 MutterDAO dao=new MutterDAO(); 10 List<Mutter> mutterList=dao.findAll(); 11 return mutterList; 12} 13} 14
Mutter.java
java
1package model; 2 3public class Mutter { 4private String userName; 5private String text; 6private int id; 7 8public Mutter() {} 9public Mutter(String userName,String text) { 10 this.userName=userName; 11 this.text=text; 12 13} 14public Mutter(int id,String userName,String text) { 15 this.id=id; 16 this.userName=userName; 17 this.text=text; 18} 19public int getId() {return id;} 20public String getUserName() {return userName;} 21public String getText() {return text;} 22} 23
PostMutterLogic.java
java
1package model; 2 3import dao.MutterDAO;; 4 5public class PostMutterLogic { 6public void execute(Mutter mutter) { 7 MutterDAO dao=new MutterDAO(); 8 dao.create(mutter); 9} 10}
Main.java
java
1package servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletContext; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14import javax.servlet.http.HttpSession; 15import model.PostMutterLogic; 16import model.Mutter; 17import model.User; 18import model.GetMutterListLogic; 19 20/** 21 * Servlet implementation class Main 22 */ 23@WebServlet("/Main") 24public class Main extends HttpServlet { 25 private static final long serialVersionUID = 1L; 26 27 28 public Main() { 29 super(); 30 31 } 32 33 34 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 35 GetMutterListLogic gMLL=new GetMutterListLogic(); 36 List<Mutter> mutterList=gMLL.execute(); 37 request.setAttribute("mutterList", mutterList); 38 39 40 HttpSession session=request.getSession(); 41 User loginUser=(User)session.getAttribute("loginUser"); 42 43 if(loginUser==null) { 44 45 response.sendRedirect("/docoTsubu/"); 46 }else { 47 RequestDispatcher dis=request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 48 dis.forward(request, response); 49 } 50 } 51 52 /** 53 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 54 */ 55 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 56 request.setCharacterEncoding("UTF-8"); 57 String text=request.getParameter("text"); 58 59 60 if(text!=null&&text.length()!=0) { 61 62 HttpSession session=request.getSession(); 63 User loginUser=(User) session.getAttribute("loginUser"); 64 65 66 Mutter mutter=new Mutter(loginUser.getName(),text); 67 PostMutterLogic pML=new PostMutterLogic(); 68 pML.execute(mutter); 69 70 71 }else { 72 request.setAttribute("errorMsg", "つぶやきが入力されていません"); 73 } 74 GetMutterListLogic gMLL=new GetMutterListLogic(); 75 List<Mutter> mutterList=gMLL.execute(); 76 request.setAttribute("mutterList", mutterList); 77 RequestDispatcher dis=request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 78 dis.forward(request, response); 79 } 80 81}
main.jsp
jsp
1%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ page import="model.User,model.Mutter,java.util.List" %> 4 <% User loginUser=(User) session.getAttribute("loginUser"); 5 List<Mutter> mutterList=(List<Mutter>)request.getAttribute("mutterList"); 6 String errorMsg=(String)request.getAttribute("errorMsg");%> 7<!DOCTYPE html> 8<html> 9<head> 10<meta charset="UTF-8"> 11<title>どこつぶ</title> 12</head> 13<body> 14<h1>どこつぶメイン</h1> 15<p> 16<%= loginUser.getName() %>さん、ログイン中 17<a href="/docoTsubu/Logout">ログアウト</a> 18</p> 19<p><a href="/docoTsubu/Main">更新</a></p> 20<form action="/docoTsubu/Main" method="post"> 21<input type="text" name="text"> 22<input type="submit" value="つぶやく"> 23</form> 24<% if(errorMsg!=null){ %> 25<p><%= errorMsg %></p> 26<% } %> 27<% for(Mutter mutter:mutterList){ %> 28<p><%= mutter.getUserName() %>:<%= mutter.getText() %></p> 29<% } %> 30</body> 31</html> 32
試したこと
色々調べた所、tomcatの中にJDBCのドライバーを入れるということだったので、入れたぐらいです
補足情報(FW/ツールのバージョンなど)
eclipce Photon Release (4.8.0)
tomcat 9.0.10
postgresql-42.2.10
他に必要な情報ございましたら教えてください。
###追記
現在実行してみたら/docoTubu/Loginにたどり着けなくなってしまいました。
ファイルがあるのですがどうしてでしょうか
java
1Type ステータスレポート 2 3メッセージ /docoTsubu/Login 4 5説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists. 6 7
回答1件
あなたの回答
tips
プレビュー