Login.javaで Mutterをimportしているのに、if(mutterList.getUserPass()!=null && mutterList.getUserName()!=null){
//の下線にコンパイルエラーがでるのでしょうか?
また、MutterDAOでUserをimportしているのに,なぜpStmt.setString(1, user.getName());
//pStmt.setString(2, user.getPass());のuserの下線にコンパイルエラーが出るのでしょうか?
コードの順番は、実際の流れを元に書きました。
まず、フィールドとなるMutter.java,User.java
そして、最初の画面でリクエストパラメータ(name,pass)の送信元となるindex.jsp
次に、送信先となるLogin.java(servlet),
Login.javaの中でnewされデータベースと関わるfindAll()を持つexecute()を持つLoginLogic.java(model)
最後に、そのfindAll()を持つMutterDAO.java(model)
の順番に記載しています。
どうぞよろしくお願いします。
Mutter.java(model)です。
java
1package model; 2 3import java.io.Serializable; 4 5public class Mutter implements Serializable{ 6 7 8 private String userName; 9 private String userPass; 10 11 public Mutter(){} 12 public Mutter(String userName,String userPass){ 13 this.userName=userName; 14 this.userPass=userPass; 15 16 } 17 public String getUserName(){return userName;} 18 public String getUserPass(){return userPass;} 19 20 } 21 22
User.java(model)です。
java
1package model; 2 3import java.io.Serializable; 4public class User implements Serializable{ 5 6 //Userはログインの時に使う 7 8 private String name; 9 private String pass; 10 11 public User(){} 12 public User(String name,String pass){ 13 this.name=name; 14 this.pass=pass; 15 } 16 public String getName(){return name;} 17 public String getPass(){return pass;} 18 } 19 20
index.jspです。
java
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4<html> 5<head> 6<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7<title>ログインだけのもの</title> 8</head> 9<body> 10<h1>ログインだけのものにようこそ</h1> 11<form action="/example24/Login" method="post"> 12ユーザー名:<input type="text" name="name"><br> 13パスワード:<input type="password" name="pass"><br> 14<input type="submit" value="ログイン"> 15</body> 16</html>
Login.java(servlet)です。
java
1package servlet; 2 3import java.io.IOException; 4import java.util.List; 5import java.util.ArrayList; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13import javax.servlet.http.HttpSession; 14 15import model.LoginLogic; 16 17//ここで Mutterをimportしているのに、if(mutterList.getUserPass()!=null && mutterList.getUserName()!=null){ 18//の下線にコンパイルエラーがでるのでしょうか? 19import model.Mutter; 20import model.User; 21 22 23@WebServlet("/Login") 24public class Login extends HttpServlet { 25 private static final long serialVersionUID = 1L; 26 27 28 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 30 //リクエストパラメータの取得 31 request.setCharacterEncoding("UTF-8"); 32 String name=request.getParameter("name"); 33 String pass=request.getParameter("pass"); 34 35 //Userインスタンス(ユーザー情報お)の生成 36 User user=new User(name,pass); 37 38 //ログイン処理 39 40 LoginLogic loginLogic=new LoginLogic(); 41 //execute()で帰ってきたmutterListを代入 42 List<Mutter>mutterList=LoginLogic.execute(); 43 44 //リクエストパラメータ(index.jsp)でsubmitで送信したnameとpassに対応した(MutterDAOでWHERE句で指定)PASSとNAMEをSELECTして、それらをuserNameとuserPassに代入 45 //して、それらがnullでないかをif文で確認 46 if(mutterList.getUserPass()!=null && mutterList.getUserName()!=null){ 47 //nullでない場合は, 48 //User情報をセッションスコープに保存 49 HttpSession session=request.getSession(); 50 session.setAttribute("loginUser", user); 51 52 //ログイン結果画面にフォワード 53 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/loginResult.jsp"); 54 dispatcher.forward(request,response); 55 }else{ 56 //nullだった場合は、 57 response.sendRedirect("/example24/"); 58 //ログイン画面にリダイレクト 59 } 60 } 61} 62
LoginLogic.java(model)です。
java
1package model; 2import java.util.List; 3import dao.MutterDAO; 4public class LoginLogic { 5 //GetMutterListLogicのfindAll()やnew MutterDAOをここでやる 6 7 //Login.java(serlvetのexecuteめそっとのコードにコンパイルエラーが出るからここでstaticに変更 8 public static List<Mutter>execute(){ 9 MutterDAO dao=new MutterDAO(); 10 List<Mutter>mutterList=dao.findAll(); 11 return mutterList; 12 //mutterListを呼び出し元のLogin.java(servlet)に返す 13 } 14}
MutterDAOです。
java
1//書き換え完了(データベースからの取得内容とnew mutterの内容を変更 2 3package dao; 4 5import java.sql.Connection; 6import java.sql.DriverManager; 7import java.sql.PreparedStatement; 8import java.sql.ResultSet; 9import java.sql.SQLException; 10import java.util.ArrayList; 11import java.util.List; 12 13//ここでUserをimportしているのに,なぜpStmt.setString(1, user.getName()); 14//pStmt.setString(2, user.getPass());のuserの下線にコンパイルエラーが出るのでしょうか? 15import model.User; 16import model.Mutter; 17 18public class MutterDAO { 19 20 private final String DRIVER_NAME="org.h2.Driver"; 21 private final String JDBC_URL="jdbc:h2:file:/Users/endo/Documents/networkspace/example23/h2data.dat"; 22 private final String DB_USER="sa"; 23 private final String DB_PASS=""; 24 25 public List<Mutter>findAll(){ 26 Connection conn=null; 27 List<Mutter>mutterList=new ArrayList<Mutter>(); 28 try{ 29 Class.forName(DRIVER_NAME); 30 conn=DriverManager.getConnection(JDBC_URL,DB_USER,DB_PASS); 31 32 String sql="SELECT NAME,PASS FROM MUTTER WHERE NAME=(?)AND PASS=(?)"; 33 PreparedStatement pStmt=conn.prepareStatement(sql); 34 //Insert文中の「?」に使用する値を設定しSQLを完成 35 pStmt.setString(1, user.getName()); 36 pStmt.setString(2, user.getPass()); 37 38 //SELECTを実行 39 ResultSet rs=pStmt.executeQuery(); 40 41 //SELECT文の結果をArrayList二格納 42 while(rs.next()){ 43 44 //データベースのNAMEとPASSをuserNameとuserPass二代入 45 String userName=rs.getString("NAME"); 46 //ここもString text=rs.getString("TEXT"); 47 String userPass=rs.getString("PASS"); 48 49 Mutter mutter=new Mutter(userName,userPass); 50 mutterList.add(mutter); 51 } 52 }catch(SQLException e){ 53 e.printStackTrace(); 54 return null; 55 }catch(ClassNotFoundException e){ 56 e.printStackTrace(); 57 return null; 58 }finally{ 59 //データベース切断 60 if(conn!=null){ 61 try{ 62 conn.close(); 63 }catch(SQLException e){ 64 e.printStackTrace(); 65 return null; 66 } 67 } 68 } 69 return mutterList; 70} 71 72} 73
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/24 07:44