[セットトップ]サーブレット+Jsp+MySqlユーザーログインインスタンス

15523 ワード

林炳文エヴァンカカのオリジナル作品.転載は出典を明記してくださいhttp://blog.csdn.net/evankaka
本稿では,サーブレット+Jsp+MySqlインスタンスを用いてユーザ登録を行い,MVCの考え方を簡単に紹介したが,この例もこの考え方に従ったものである.Eclipse+tomcat 7.0で作りました.難しくないです.MVCの考えを知るのに役立ちます.
本プロジェクトのダウンロード
効果:
これは最初のインタフェースです
[置顶] Servlet+Jsp+MySql用户登录实例_第1张图片
これはエラー時のメッセージです
[置顶] Servlet+Jsp+MySql用户登录实例_第2张图片                                                                                                                     
これは成功したときの情報です.
[置顶] Servlet+Jsp+MySql用户登录实例_第3张图片
一、MVC紹介
MVCのフルネームはModel ViewControllerであり、モデル-ビュー-コントローラ(controller)の略であり、ソフトウェア設計の模範であり、ビジネスロジック、データ、インタフェース表示分離の方法でコードを組織し、ビジネスロジックを1つの部品に集め、カスタマイズインタフェースとユーザーのインタラクションを改善し、個性化すると同時に、ビジネスロジックを再作成する必要はありません.MVCは、論理的なグラフィカルユーザインタフェースの構造において、従来の入力、処理、および出力機能をマッピングするために独自に開発された.
[置顶] Servlet+Jsp+MySql用户登录实例_第4张图片
コントローラコントローラはユーザの要求を管理している(ユーザがグラフィックユーザインタフェース(GUI)上の要素をクリックして操作を行うと、コントローラはHTTP GETまたはPOST要求を受け取る).その主な機能は、必要なリソース/オブジェクトを呼び出して調整してユーザーリクエストを実行することです.通常、コントローラはタスクに適切なモデルを呼び出し、適切なビューを選択します.モデルモデルとは、アプリケーションが管理するオブジェクトに一般的に対応するデータ上に動作するデータ・ルールとデータ・コンテンツを指します.ソフトウェアシステムでは、任意のものを何らかの方法で処理できるデータモデルとして抽象化することができる.アプリケーションのユーザー、情報、図書は何ですか?これらは、対応するルールに従って処理しなければならないデータの山にすぎません(日付は将来の日付ではなく、電子メールには特定のフォーマットがあり、名前の長さは文字を超えてはいけません).
ビュービューでは、モデルデータを表示する方法が異なります.データが埋め込まれたテンプレートかもしれません.ビューは複数ありますが、コントローラはどのビューを使用するかを決定します.1つのネットワークアプリケーションは、通常、多くのコントローラ、モデル、およびビューから構成されます.コントローラは、ユーザのすべての要求を受信し、特定のコントローラを呼び出して異なる状況を処理するメインコントローラと見なすことができる.
二、本文MVC構造
本文のこの例は、比較的簡単です.下の図を見ればわかる
[置顶] Servlet+Jsp+MySql用户登录实例_第5张图片
三、プログラム
1、データベースを作成する.ここではMySql 5を使用する.6、ユーザーを挿入
create database example;
use example;
create table user(
userid int primary key auto_increment,
name varchar(30) NOT NULL,
password varchar(30) NOT NULL
);
insert into user(userid,name,password) values (null,'lin','1234');
exampleが存在しない場合は、まずcreate database exampleを作成してください.
select*from userの結果は次のとおりです.
[置顶] Servlet+Jsp+MySql用户登录实例_第6张图片
2、VOクラス、データベースに対応するため、DAOクラスで使われるもの
/** 
*   VO 
*      ([email protected]   :http://blog.csdn.net/evankaka) 
*   2015.4.22
*/
package com.mucfc.vo;
public class User {
	private int userid;//      userid
	private String name;//      name
	private String password;//      password
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

}

3、操作データベースを定義し、データベースの接続を完了し、開くなどの操作を行い、異常操作を加えることに注意しなければならない.これもDAO類で必要なものです
/** 
*           
*      ([email protected]   :http://blog.csdn.net/evankaka) 
*   2015.4.22
*/
package com.mucfc.dbc;

import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseConnection {
	//         
	private static final String DBDRIVER="com.mysql.jdbc.Driver";
	//       
	private static final String DBURL="jdbc:mysql://localhost:3306/example";//example     
	private static final String DBUSER="root";
	private static final String DBPASS="christmas258@";
    private Connection connection=null;
    public DatabaseConnection() throws Exception{
    	try{
    		//           
    		Class.forName(DBDRIVER);
    		connection=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
    		
    	}catch(Exception exception ){
    		throw exception;
    	} finally {
		}	
    }
    public Connection getConnection(){
    	return connection;
    }
    public void close() throws Exception{
    	if(connection!=null){
    		try {
    			connection.close();			
			} catch (Exception e) {
				throw e;
			}
    	}
    	
    }

}

4、DAOインタフェースの定義
インタフェースクラス、このユーザーが存在するかどうかをクエリーする方法はfindLogin(User user)です.
/** 
*     DAO  
*      ([email protected]   :http://blog.csdn.net/evankaka) 
*   2015.4.22
*/
package com.mucfc.dao;
import com.mucfc.vo.User;
public interface IUserDAO {
/**
 *       
 * @param user  vo  
 * @return         
 * @throws Exception
 */
public boolean findLogin(User user) throws Exception;

}

5、DAOの実装クラス、ここではかなりMode(モデル層)
/** 
*     DAO   
*      ([email protected]   :http://blog.csdn.net/evankaka) 
*   2015.4.22
*/
package com.mucfc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.mucfc.vo.User;
public class UserDAOImpI implements IUserDAO{
	private Connection conn=null;//          
	private PreparedStatement pstmt=null;//         
	public UserDAOImpI(Connection conn){ //       
		this.conn=conn;
	}
	@Override
	public boolean findLogin(User user) throws Exception {
		boolean flag=false;
		try {
			String sql="select name from user where name=? and password=?";
			pstmt=conn.prepareStatement(sql);//     
			pstmt.setString(1,user.getName());
		    pstmt.setString(2, user.getPassword());
		    ResultSet rSet=pstmt.executeQuery();//     
		    if(rSet.next()){
		    	user.setName(rSet.getString(1));//     
		    	flag=true;   	
		    }

		} catch (Exception e) {
			throw e;
		}finally{
			//    
			if(pstmt!=null){
				try {
					pstmt.close();
				} catch (Exception e) {
					throw e;				
			}		
		}
			
		}
		return flag;
	}
	
}
はユーザ名とパスワードを検証し、検証に成功した場合、VOによってユーザの実名を取り出して返す.
6、DAOの代理クラスを定義する
ここでこのエージェントクラスは必要でも不要でもよいが,ここでは便宜上,一つ定義した.
/** 
*     DAO   
*      ([email protected]   :http://blog.csdn.net/evankaka) 
*   2015.4.22
*/
package com.mucfc.dao.proxy;
import com.mucfc.dao.IUserDAO;
import com.mucfc.dao.UserDAOImpI;
import com.mucfc.dbc.DatabaseConnection;
import com.mucfc.vo.User;
public class UserDAOProxy implements IUserDAO{
    private DatabaseConnection dbc=null;//       
    private IUserDAO dao=null;//  DAO  
    public UserDAOProxy(){
    	try {
			dbc=new DatabaseConnection();//        
		} catch (Exception e) {
			e.printStackTrace();
		}
    	dao=new UserDAOImpI(dbc.getConnection());
    	
    }
	@Override
	public boolean findLogin(User user) throws Exception {
		boolean flag=false;
		try {
			flag=dao.findLogin(user);//      
		} catch (Exception e) {
			throw e;
		}finally{
			dbc.close();
		}
		return flag;
	}

}

7、新しいサーブレットクラスを作成し、Loginサーブレットと名付けた.JAva、ここではController(制御層)コードに相当します.
package com.mucfc.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 com.mucfc.dao.proxy.UserDAOProxy;
import com.mucfc.vo.User;
/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	String name=request.getParameter("name");
	String password=request.getParameter("password");
	List<String> info=new ArrayList<String>();
	if(name==null||"".equals(name)){ //         
		info.add("       ");
		System.out.println("       ");
	}

	if(password==null||"".equals(password)){//        
		info.add("      ");
		System.out.println("      ");
	}
	if(info.size()==0){
		User user=new User();
		user.setName(name);
		user.setPassword(password);
		UserDAOProxy userDAOProxy=new UserDAOProxy();
		try {
			
			if(userDAOProxy.findLogin(user)){
				info.add("      ,  "+user.getName()+"  !");				
			}else {
				info.add("      ,         ");
			}						
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	request.setAttribute("info", info);//      
	request.getRequestDispatcher("Login.jsp").forward(request,response);//  
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doGet(request, response);
	}

}
それは主にLoginを得ることを実現した.jspから渡されたnameとpasswordは、daoクラスをデータベースexampleのuserテーブルに呼び出してnameとpasswordの検証を行います.最後に結果をloginに返す.jsp、次にlogin、jspが表示結果を更新します.
8、初期画面Login.jsp、ここではかなりView(表示レイヤ)
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<center><title>MVC    </title></center>
</head>
<body>
<center><h2>      </h2></center>
<center>
<%
request.setCharacterEncoding("GBK");
%>
<%
List<String> info=(List<String>)request.getAttribute("info");
if(info!=null){
	Iterator<String> iter=info.iterator();
	while(iter.hasNext()){
%>
<h4><%=iter.next()%></h4>
<% 
}
}
%>
</center>
<center>
<form action="LoginServlet" method="post" onSubmit="return validate(this)">
   :<input type="text" name="name"><br>
    :<input type="password" name="password"><br>
 <input type="submit" value="  ">
 <input type="reset" value="  ">
</form>
</center>
</body>
</html>

9、web.xml設定:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <welcome-file-list>
    <welcome-file>Login.html</welcome-file>
    <welcome-file>Login.htm</welcome-file>
    <welcome-file>Login.jsp</welcome-file>

  </welcome-file-list>
  
    <servlet>   
    <servlet-name>LoginServlet</servlet-name>  <!--    -->
    <servlet-class>com.mucfc.servlet.LoginServlet</servlet-class> <!--      -->
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name> 
    <url-pattern>/servlet/LoginServlet</url-pattern><!--       -->
    </servlet-mapping>
</web-app>

10.必要なパッケージをインポートするには、必ず!

11.工程目録全体は以下の通りである.
[置顶] Servlet+Jsp+MySql用户登录实例_第7张图片
12、運転
[置顶] Servlet+Jsp+MySql用户登录实例_第8张图片
13、結果
ブラウザの入力:http://localhost:8080/ServletLearningChapter1_3/
[置顶] Servlet+Jsp+MySql用户登录实例_第9张图片
[置顶] Servlet+Jsp+MySql用户登录实例_第10张图片
[置顶] Servlet+Jsp+MySql用户登录实例_第11张图片
[置顶] Servlet+Jsp+MySql用户登录实例_第12张图片
はい、簡単ではありませんか.
林炳文エヴァンカカのオリジナル作品.転載は出典を明記してくださいhttp://blog.csdn.net/evankaka
本プロジェクトのダウンロード