日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaEE 设计模式

發布時間:2024/4/14 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaEE 设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JDBC | 模板模式&策略模式 這兩天自己的機子出了怪現象,cmd窗口打不開,組策略編輯器打不開,但是有時可以打開,好象被人控制了一般,花十塊錢升級了一下病毒庫(金山毒霸),查了一天毒(一遍又一遍)...無病毒,最后還原了系統,至今不知道什么原因...見鬼了...

拿登陸模擬程序實現了如題兩個模式的應用,用PreparedStatement防止了類似sql注入的不安全因素:
模板模式:
package cn.zhd;
import cn.zhd.*;
import java.sql.*;
import org.apache.log4j.*;
//模板類
abstract class Jdbc_Template {
??? Connection cn=null;
??? PreparedStatement pstatm=null;
??? ResultSet rs=null;
??? Configuration config=null;
??? Logger log=Logger.getLogger(Jdbc_Template.class);
??? public void setConfig(Configuration config){
??? ??? this.config=config;
??? }
??? public void execute(String user,String pass){
??? ??? try{
??? ??? ??? Class.forName(config.getValue("driver"));
???
??? ??? ??? cn=DriverManager.getConnection(config.getValue("URL"),config.getValue("user"),config.getValue("pass"));???

??? ??? ??? doExecute(pstatm,user,pass);

??? ??? }catch(Exception e){
??? ??? ??? log.warn(e);
??? ??? ??? e.printStackTrace();
??? ??? }
??? ??? finally{
??? ??? ??? if(cn != null)??? {
??? ??? ??? ??? try{
??? ??? ??? ??? ??? if(pstatm != null){
??? ??? ??? ??? ??? ??? try{
??? ??? ??? ??? ??? ??? ??? if(rs != null){
??? ??? ??? ??? ??? ??? ??? ??? try{
??? ??? ??? ??? ??? ??? ??? ??? ??? rs.close();??? ??? ??? ??? ??? ??? ??? ??? ???
??? ??? ??? ??? ??? ??? ??? ??? }catch(Exception e){
??? ??? ??? ??? ??? ??? ??? ??? ??? log.warn(e);
??? ??? ??? ??? ??? ??? ??? ??? ??? e.printStackTrace();
??? ??? ??? ??? ??? ??? ??? ??? }
??? ??? ??? ??? ??? ??? ??? }
??? ??? ??? ??? ??? ??? ??? pstatm.close();
??? ??? ??? ??? ??? ??? }catch(Exception e){
??? ??? ??? ??? ??? ??? ??? log.warn(e);
??? ??? ??? ??? ??? ??? ??? e.printStackTrace();
??? ??? ??? ??? ??? ??? }
??? ??? ??? ??? ??? }
??? ??? ??? ??? ??? cn.close();
??? ??? ??? ??? }catch(Exception ex){
??? ??? ??? ??? ??? log.warn(ex);
??? ??? ??? ??? ??? ex.printStackTrace();
??? ??? ??? ??? }
??? ??? ??? }???
??? ??? ??? ???
??? ??? }
??? }
??? ???

??? abstract void doExecute(PreparedStatement pstatm,String user,String pass);
??? ???

}
//繼承自模板
public class Jdbc_Template extends Jdbc_Template{
???
??? public void doExecute(PreparedStatement pstatm,String user,String pass){

??? ??? boolean foo=false;
??? ??? if(cn==null){

??? ??? ??? log.warn("connect is failure!");
??? ??? ??? return;
??? ??? }
??? ??? String query="select * from login where user=? and pass=?";

??? ??? try{
??? ??? ??? pstatm=cn.prepareStatement(query);
??? ??? ??? pstatm.setString(1,user);
??? ??? ??? pstatm.setString(2,pass);
??? ??? ??? rs=pstatm.executeQuery();
??? ??? ??? while(rs.next()){
??? ???
??? ??? ??? ??? foo=true;
??? ??? ??? ??? break;
??? ??? ??? }
??? ??? ??? if(foo){
??? ??? ???
??? ??? ??? ??? log.warn("welcome"+"? "+user);
??? ??? ??? }
??? ??? ??? else

??? ??? ??? ??? log.warn("failure!");
??? ??? }catch(SQLException e){
??? ??? ??? log.warn(e);
??? ??? ??? e.printStackTrace();
??? ??? }???
??? }
???
??? public static void main(String []args){
??? ??? Logger log=Logger.getLogger(JdbcTemplate.class);
??? ??? try{
??? ??? ??? Configuration cfg=new Configuration("/JdbcDemo.properties");
??? ??? ??? JdbcTemplate jm=new JdbcTemplate();
??? ??? ??? jm.setConfig(cfg);
//??? ??? ??? 用spring的話,上面的代碼就可以不寫了,直接用xml配置
??? ??? ??? jm.execute("zz","123");
??? ??? }catch(Exception e){
??? ??? ??? log.warn(e);
??? ??? ??? e.printStackTrace();
??? ??? }
??? }
}

策略模式:
package cn.zhd;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.log4j.Logger;

interface MyPolicy{
??? public void Login(Connection cn,PreparedStatement pstatm,Configuration config,String user,String pass);
}
//登陸算法1
class MyStrategy1 implements MyPolicy{

??? public void Login(Connection cn,PreparedStatement pstatm,Configuration config,String user,String pass){
??? ??? boolean foo=false;
??? ??? Logger log=Logger.getLogger(MyStrategy1.class);?? ??
??? ??? try{
??? ??? ??? String query=config.getValue("select1");
??? ??? ??? pstatm=cn.prepareStatement(query);
??? ??? ??? pstatm.setString(1,user);
??? ??? ??? pstatm.setString(2,pass);
??? ??? ??? ResultSet rs=pstatm.executeQuery();
??? ??? ??? while(rs.next()){
??? ??? ??? ??? foo=true;
??? ??? ??? ??? break;
??? ??? ??? }
??? ??? ??? if(foo){
??? ??? ??? ??? System.out.print("sdsdf");
??? ??? ??? ??? log.warn("cheng gong denglu!");
??? ??? ??? }
??? ??? ??? else
??? ??? ??? ??? log.warn("denglu shibai");
??? ??? }catch(SQLException e){
??? ??? ??? log.warn(e);
??? ??? }
??? }
}
//登陸算法2
class MyStrategy2 implements MyPolicy{
??? public void Login(Connection cn,PreparedStatement pstatm,Configuration config,String user,String pass){
??? ??? boolean foo_u=false;
??? ??? boolean foo_p=false;
??? ??? Logger log=Logger.getLogger(MyStrategy2.class);
??? ???
??? ???
??? ??? try{
??? ??? ??? String query1=config.getValue("select2");
??? ??? ??? String query2=config.getValue("select3");
??? ??? ??? pstatm=cn.prepareStatement(query1);
??? ??? ???
??? ??? ??? pstatm.setString(1,user);
??? ??? ??? ResultSet rs=pstatm.executeQuery();???
??? ??? ??? while(rs.next()){
??? ??? ??? ??? foo_u=true;
??? ??? ??? }
??? ??? ??? if(foo_u){
??? ??? ??? ??? pstatm=cn.prepareStatement(query2);
??? ??? ??? ??? pstatm.setString(1,user);
??? ??? ??? ??? ResultSet rst=pstatm.executeQuery();
??? ??? ??? ??? while(rst.next()){
??? ??? ??? ??? ??? System.out.println(rst.getString("pass") + pass.toString());
??? ??? ??? ??? ??? //caonima
??? ??? ??? ??? ??? if(rst.getString("pass").equals(pass.toString())){
??? ??? ??? ??? ??? ??? foo_p=true;
??? ??? ??? ??? ??? ??? System.out.println(rst.toString());
??? ??? ??? ??? ??? }???
??? ??? ??? ??? }
??? ??? ??? }
??? ??? ??? if(foo_u && foo_p){
??? ??? ??? ??? log.warn("weclome" +"? "+ user+"!");
??? ??? ??? }
??? ??? ??? else if(foo_u==false){
??? ??? ??? ??? log.warn("user"+"is"+"not"+"this");
??? ??? ??? }
??? ??? ??? else if(foo_p==false)
??? ??? ??? ??? log.warn("pass"+"is"+"not"+"this");
??? ??? ??? ???
??? ??? }catch(SQLException e){
??? ??? ??? log.warn(e);
??? ??? }

??? }
}

public class JdbcStrategy {
??? MyPolicy mp1=new MyStrategy1();
??? MyPolicy mp2=new MyStrategy2();
??? Connection cn=null;
??? PreparedStatement pstatm=null;
??? ResultSet rs=null;
??? Configuration config=null;
??? Logger log=Logger.getLogger(JdbcStrategy.class);
??? public void setConfig(Configuration config){
??? ??? this.config=config;
??? }
??? public void executeLogin(String user,String pass){
??? ??? try{
??? ??? ??? Class.forName(config.getValue("driver"));
??? ??? ??? cn=DriverManager.getConnection(config.getValue("URL"),config.getValue("user"),config.getValue("pass"));
??? ??? ??? if(cn==null){
??? ??? ??? ??? log.warn("connect is failure");
??? ??? ??? ??? return;
??? ??? ??? }
??? //控制運行時所選登陸算法??? ???
??? //??? ??? mp1.Login(cn,pstatm,config,user,pass);
??? ??? ??? mp2.Login(cn,pstatm,config,user,pass);
??? ??? }catch(ClassNotFoundException e){
??? ??? ??? log.warn(e);
??? ??? }catch(SQLException e){
??? ??? ??? log.warn(e);
??? ??? }
??? ??? finally{
??????????? if(cn != null)??? {
??????????????? try{
??????????????????? if(pstatm != null){
??????????????????????? try{
??????????????????????????? if(rs != null){
??????????????????????????????? try{
??????????????????????????????????? rs.close();??????????????????????????????????
??????????????????????????????? }catch(Exception e){
??????????????????????????????????? log.warn(e);
??????????????????????????????????? e.printStackTrace();
??????????????????????????????? }
??????????????????????????? }
??????????????????????????? pstatm.close();
??????????????????????? }catch(Exception e){
??????????????????????????? log.warn(e);
??????????????????????????? e.printStackTrace();
??????????????????????? }
??????????????????? }
??????????????????? cn.close();
??????????????? }catch(Exception ex){
??????????????????? log.warn(ex);
??????????????????? ex.printStackTrace();
??????????????? }
??????????? }
??? ??? }??
??? }
??? public static void main(String[] args) {
??? ??? Logger log=Logger.getLogger(JdbcStrategy.class);
??????? try{
??????????? Configuration cfg=new Configuration("/JdbcDemo.properties");
??????????? JdbcStrategy js=new JdbcStrategy();
??????????? js.setConfig(cfg);
??????????? js.executeLogin("zhd","223");
??????? }catch(Exception e){
??????????? log.warn(e);
??????????? e.printStackTrace();
??????? }

??? }

}

正是這些模式的引進,才讓我們對數據的持久化實現技術越來越傻瓜,hibernate是從這些基礎上發展過來的...
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的JavaEE 设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。