このようなLogin.Servletのコードでif文がelseに、なってしまいます。どのように改善すればいいのでしょうか?よろしくお願いします。
consoleには、このような警告が出ます。警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:i' did not find a matching property.
11 21, 2015 1:00:40 午後 org.apache.tomcat.util.digester.SetPropertiesRule begin
H2databaseで、SELECT * FROM ACCOUNT;と実行すると、このような表が出てきます。
USER_ID PASS MAIL NAME AGE
minato 1234 minato@sukkiri.com 灘 雄輔 23
ログインする時は、ユーザーID minato パスワード 1234 と入力しています。
//LoginServlet.java(loginの判定をするクラス)
package servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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 model.Login;
import model.LoginLogic;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet{
private static final long serialVersionUID=1L;
protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ //フォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/login.jsp"); dispatcher.forward(request, response); }
protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
//リクエストパラーメータの取得 request.setCharacterEncoding("UTF-8"); String userId=request.getParameter("userId"); String pass=request.getParameter("pass"); //ログイン処理の実行 Login login=new Login(userId,pass); LoginLogic bo=new LoginLogic(); boolean result=bo.execute(login); //ログイン処理の成否によって処理を分岐 if(result){//ログイン成功時 //sessionスコープにユーザーIDを保存 HttpSession session=request.getSession(); session.setAttribute("userId",userId ); //フォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/loginOK.jsp"); dispatcher.forward(request, response); }else{//ログイン失敗時 //フォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/tuika.jsp"); dispatcher.forward(request, response); }
//H2databaseとの接続(AccountDAO.java)
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import model.Account;
import model.Login;
public class AccountDAO{
public Account findByLogin(Login login){
Connection conn=null;
Account account=null;
try{
//JDBCドライバを読み込む
Class.forName("org.h2.Driver");
//データベースに接続 conn=DriverManager.getConnection("jdbc:h2:file:/Users/taichi/Documents/newworkspace/sukkiriShops/h2data.dat","sa",""); //SELECT文を準備 String sql="SELECT USER_ID,PASS,MAIL,NAME,AGE FROM ACCOUNT WHERE USER_ID=? AND PASS=?"; PreparedStatement pStmt=conn.prepareStatement(sql); pStmt.setString(1,login.getUserId()); pStmt.setString(2, login.getPass()); //SELECT 文を実行し、結果表を取得 ResultSet rs=pStmt.executeQuery(); //一致したユーザーが存在した場合 //そのユーザーを表すAccountインスタンスを生成 if(rs.next()){ //結果表からデータを取得 String userId=rs.getString("USER_ID"); String pass=rs.getString("PASS"); String mail=rs.getString("MAIL"); String name=rs.getString("NAME"); int age=rs.getInt("AGE"); account =new Account(userId,pass,mail,name,age); } }catch(SQLException e){ e.printStackTrace(); return null; }catch(ClassNotFoundException e){ e.printStackTrace(); return null; }finally{ //データベースを切断 if(conn!=null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); return null; } } } //見つかったユーザーまたはnullを返す return account; }
}
//LoginLogic.javaです。
package model;
import dao.AccountDAO;
public class LoginLogic {
public boolean execute(Login login){
AccountDAO dao=new AccountDAO();
Account account=dao.findByLogin(login);
return account !=null;
}
}
どうぞよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー