[セットトップ]サーブレット+Jsp+MySqlユーザーログインインスタンス
15523 ワード
林炳文エヴァンカカのオリジナル作品.転載は出典を明記してくださいhttp://blog.csdn.net/evankaka
本稿では,サーブレット+Jsp+MySqlインスタンスを用いてユーザ登録を行い,MVCの考え方を簡単に紹介したが,この例もこの考え方に従ったものである.Eclipse+tomcat 7.0で作りました.難しくないです.MVCの考えを知るのに役立ちます.
本プロジェクトのダウンロード
効果:
これは最初のインタフェースです
これはエラー時のメッセージです
これは成功したときの情報です.
一、MVC紹介
MVCのフルネームはModel ViewControllerであり、モデル-ビュー-コントローラ(controller)の略であり、ソフトウェア設計の模範であり、ビジネスロジック、データ、インタフェース表示分離の方法でコードを組織し、ビジネスロジックを1つの部品に集め、カスタマイズインタフェースとユーザーのインタラクションを改善し、個性化すると同時に、ビジネスロジックを再作成する必要はありません.MVCは、論理的なグラフィカルユーザインタフェースの構造において、従来の入力、処理、および出力機能をマッピングするために独自に開発された.
コントローラコントローラはユーザの要求を管理している(ユーザがグラフィックユーザインタフェース(GUI)上の要素をクリックして操作を行うと、コントローラはHTTP GETまたはPOST要求を受け取る).その主な機能は、必要なリソース/オブジェクトを呼び出して調整してユーザーリクエストを実行することです.通常、コントローラはタスクに適切なモデルを呼び出し、適切なビューを選択します.モデルモデルとは、アプリケーションが管理するオブジェクトに一般的に対応するデータ上に動作するデータ・ルールとデータ・コンテンツを指します.ソフトウェアシステムでは、任意のものを何らかの方法で処理できるデータモデルとして抽象化することができる.アプリケーションのユーザー、情報、図書は何ですか?これらは、対応するルールに従って処理しなければならないデータの山にすぎません(日付は将来の日付ではなく、電子メールには特定のフォーマットがあり、名前の長さは文字を超えてはいけません).
ビュービューでは、モデルデータを表示する方法が異なります.データが埋め込まれたテンプレートかもしれません.ビューは複数ありますが、コントローラはどのビューを使用するかを決定します.1つのネットワークアプリケーションは、通常、多くのコントローラ、モデル、およびビューから構成されます.コントローラは、ユーザのすべての要求を受信し、特定のコントローラを呼び出して異なる状況を処理するメインコントローラと見なすことができる.
二、本文MVC構造
本文のこの例は、比較的簡単です.下の図を見ればわかる
三、プログラム
1、データベースを作成する.ここではMySql 5を使用する.6、ユーザーを挿入
select*from userの結果は次のとおりです.
2、VOクラス、データベースに対応するため、DAOクラスで使われるもの
3、操作データベースを定義し、データベースの接続を完了し、開くなどの操作を行い、異常操作を加えることに注意しなければならない.これもDAO類で必要なものです
4、DAOインタフェースの定義
インタフェースクラス、このユーザーが存在するかどうかをクエリーする方法はfindLogin(User user)です.
5、DAOの実装クラス、ここではかなりMode(モデル層)
6、DAOの代理クラスを定義する
ここでこのエージェントクラスは必要でも不要でもよいが,ここでは便宜上,一つ定義した.
7、新しいサーブレットクラスを作成し、Loginサーブレットと名付けた.JAva、ここではController(制御層)コードに相当します.
8、初期画面Login.jsp、ここではかなりView(表示レイヤ)
9、web.xml設定:
10.必要なパッケージをインポートするには、必ず!
11.工程目録全体は以下の通りである.
12、運転
13、結果
ブラウザの入力:http://localhost:8080/ServletLearningChapter1_3/
はい、簡単ではありませんか.
林炳文エヴァンカカのオリジナル作品.転載は出典を明記してくださいhttp://blog.csdn.net/evankaka
本プロジェクトのダウンロード
本稿では,サーブレット+Jsp+MySqlインスタンスを用いてユーザ登録を行い,MVCの考え方を簡単に紹介したが,この例もこの考え方に従ったものである.Eclipse+tomcat 7.0で作りました.難しくないです.MVCの考えを知るのに役立ちます.
本プロジェクトのダウンロード
効果:
これは最初のインタフェースです
これはエラー時のメッセージです
これは成功したときの情報です.
一、MVC紹介
MVCのフルネームはModel ViewControllerであり、モデル-ビュー-コントローラ(controller)の略であり、ソフトウェア設計の模範であり、ビジネスロジック、データ、インタフェース表示分離の方法でコードを組織し、ビジネスロジックを1つの部品に集め、カスタマイズインタフェースとユーザーのインタラクションを改善し、個性化すると同時に、ビジネスロジックを再作成する必要はありません.MVCは、論理的なグラフィカルユーザインタフェースの構造において、従来の入力、処理、および出力機能をマッピングするために独自に開発された.
コントローラコントローラはユーザの要求を管理している(ユーザがグラフィックユーザインタフェース(GUI)上の要素をクリックして操作を行うと、コントローラはHTTP GETまたはPOST要求を受け取る).その主な機能は、必要なリソース/オブジェクトを呼び出して調整してユーザーリクエストを実行することです.通常、コントローラはタスクに適切なモデルを呼び出し、適切なビューを選択します.モデルモデルとは、アプリケーションが管理するオブジェクトに一般的に対応するデータ上に動作するデータ・ルールとデータ・コンテンツを指します.ソフトウェアシステムでは、任意のものを何らかの方法で処理できるデータモデルとして抽象化することができる.アプリケーションのユーザー、情報、図書は何ですか?これらは、対応するルールに従って処理しなければならないデータの山にすぎません(日付は将来の日付ではなく、電子メールには特定のフォーマットがあり、名前の長さは文字を超えてはいけません).
ビュービューでは、モデルデータを表示する方法が異なります.データが埋め込まれたテンプレートかもしれません.ビューは複数ありますが、コントローラはどのビューを使用するかを決定します.1つのネットワークアプリケーションは、通常、多くのコントローラ、モデル、およびビューから構成されます.コントローラは、ユーザのすべての要求を受信し、特定のコントローラを呼び出して異なる状況を処理するメインコントローラと見なすことができる.
二、本文MVC構造
本文のこの例は、比較的簡単です.下の図を見ればわかる
三、プログラム
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の結果は次のとおりです.
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.工程目録全体は以下の通りである.
12、運転
13、結果
ブラウザの入力:http://localhost:8080/ServletLearningChapter1_3/
はい、簡単ではありませんか.
林炳文エヴァンカカのオリジナル作品.転載は出典を明記してくださいhttp://blog.csdn.net/evankaka
本プロジェクトのダウンロード