1. 程式人生 > 其它 >Java dom4j 解析Xml 案例

Java dom4j 解析Xml 案例

技術標籤:javawebjavaweb

1.JSP -- java server page Java伺服器頁面

1)9大內建物件:request response out session application pagecontext config page exception

2) 4個域物件

a.pagecontext --- 頁面

b.request -- 一次url 請求

c.session -- 一次會話

d.application -- 整個應用

e.cookie --- 瀏覽器本地

  • 設定session過期方法
    • session.setMaxInactiveInterval(1*60); - 單位秒
    • 手動清空值 session.setAttribute("username", null);
    • 更改配置檔案 tomcat 的web.xml - 單位分鐘 -- 預設30分鐘
<session-config>

 <session-timeout>1</session-timeout>

</session-config>

3)轉發和重定向

1)轉發:請求一次,url 不會改變

2)重定向:請求兩次,url 發生變化

2.EL - 表示式

${}

3.JSTL - 標籤

1)<c:if></c:if>

2) <c:shoose>

<c:when>

</c:when>

<c:otherwise>

</c:otherwise>

</c:shoose>

3)<c:set></c:set>

4)<c:forEach> </c:forEach>

4.servlet 和過濾器

1)servlet --- 介面,請求跳轉 --- 前臺後天溝通的橋樑

1)繼承Httpservlet 類

2)實現 Servlet 介面

3)servlet 生命週期 構造器---初始化init ---- service ----destroy

4)web 配置

<servlet>
  	<servlet-name>NewsListController</servlet-name>
  	<servlet-class>com.srr.controller.NewsListController</servlet-class>
  </servlet>
  <servlet-mapping>
    	<servlet-name>NewsListController</servlet-name>
  		<url-pattern>/list</url-pattern>
  </servlet-mapping>

5)亂碼

1)請求:

req.setCharacterEncoding("UTF-8");

2)響應

                            a.第一種方式:

              resp.setContentType("text/html;charset=UTF-8");

              b.第二種方式:

              // 設定伺服器字符集為 UTF-8

              resp.setCharacterEncoding("UTF-8");

              // 通過響應頭,設定瀏覽器也使用 UTF-8 字符集

              resp.setHeader("Content-Type", "text/html; charset=UTF-8");

2)過濾器 Filter -- 攔截器

1)實現Filter 介面

2)生命週期 -- 構造器--- init -- dofiter

3)web 配置

<filter>
  	<filter-name>DoFilter</filter-name>
  	<filter-class>com.srr.filter.DoFilter</filter-class>
  </filter>
  <filter-mapping>
    	<filter-name>DoFilter</filter-name>
  	    <url-pattern>/*</url-pattern>
  </filter-mapping>

5.Ajax JSON

1)jquery 使用Ajax -- 非同步重新整理

$.ajax({
                "url"       : "../userinfo",   //要提交的URL路徑
                "type"      : "GET",           //傳送請求的方式
                "data"      : "name="+name,    //要傳送到伺服器的資料
                "dataType"  : "text",          //指定返回的資料格式
                "success"   : function(){

                 },        //響應成功後要執行的程式碼
                "error"     : function() {     //請求失敗後要執行的程式碼
                    alert("使用者名稱驗證時出現錯誤,請稍後再試或與管理員聯絡!");
                }
            });

2)JSON -- JAVAscript ObjectNotation -- 在js 描述物件

1.組成部分:{} [] : , ""

2.在頁面端:json 字串和物件互相轉換

要實現從JSON字串轉換為JS物件,使用 JSON.parse() 方法:

1

varobj=JSON.parse('{"a":"Hello","b":"World"}');//結果是{a:'Hello',b:'World'}

要實現從JS物件轉換為JSON字串,使用 JSON.stringify() 方法:

1

varjson=JSON.stringify({a:'Hello',b:'World'});//結果是'{"a":"Hello","b":"World"}'

3.在伺服器端 -- 需要匯入這個包

1)Java物件轉json 字串

2)json 字串 轉Java物件

3)建立json 物件

JSONArray jsonArray = new JSONArray();   // 建立json 物件陣列
    for (int i = 0; i < 2; i++) {
        JSONObject jsonObject = new JSONObject(); //建立一個json 物件
        jsonObject.put("AGE", 10);  //給json  物件賦值
        jsonObject.put("FULL NAME", "Doe " + i);
        jsonObject.put("DATE OF BIRTH", "2016/12/12 12:12:12");
        jsonArray.add(jsonObject);
    }
    String jsonOutput = jsonArray.toJSONString();   //將json  陣列轉換為json 格式的字串

 Person person = new Person(20, "John", "Doe", new Date());
    String jsonObject = JSON.toJSONString(person);  //將java 物件轉換為json 字串
    Person newPerson = JSON.parseObject(jsonObject, Person.class); //將json格式的字串,轉換為Java物件

6.JDBC -- java database Connectivity Java資料庫的連線

使用步驟:

1)載入驅動 ----- 建立Driver 物件

2)獲取連線

3)預編譯sql -- PreparedStatement

4)處理結果:query /update --- crud

5)關閉連線

package com.srr.dao;

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


public class BaseDao {
	private static String driver = ConfigManage.getProperty("driver");// 驅動
	private static String url = ConfigManage.getProperty("url");// url
	private static String userName = ConfigManage.getProperty("username");// 資料庫使用者名稱
	private static String password = ConfigManage.getProperty("password");// 資料庫密碼
	private static Connection con;// 資料庫連線

	/**
	 * 獲取連線
	 */
	public static Connection getConnection() {
		// 載入驅動
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// 獲取連線
		try {
			con = DriverManager.getConnection(url, userName, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}

	/**
	 * 關閉連線
	 */
	public static void close(Connection con, Statement st, ResultSet rs) {
		if (con != null)
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		if (st != null)
			try {
				st.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		if (rs != null)
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	/**
	 * 增刪改
	 * @param sql
	 * @param args
	 * @return
	 */
	public static int update(String sql,Object ...args) {
		int row =0;
		//第一步:獲取連線
		Connection con = getConnection();
		//第二步:獲取PreparedStatement
		PreparedStatement pst;
		try {
			pst = con.prepareStatement(sql);
			//第三步:設定引數
			for(int i=0;i<args.length;i++) {
				pst.setObject(i+1, args[i]);
			}
			//第四步:執行sql  並返回結果
			row = pst.executeUpdate();
			System.out.println("影響行數:"+row);
			//第五步:關閉連線
			close(con, pst, null);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return row;
	}
	
	/**
	 * 查詢
	 * @param <T>
	 * @param clazz
	 * @param sql
	 * @param args
	 * @return
	 */
	public static  <T>List<T> query(Class<T> clazz,String sql,Object ...args) {
		ArrayList<T> list = new ArrayList<T>();
		//第一步:獲取連線
		Connection con =null;
		//第二步:預編譯sql ,並返回preparedStatement
		PreparedStatement pst =null;
		//第四步:執行sql  並返回結果集
		ResultSet rs =null;
		try {
			con = getConnection();
			pst = con.prepareStatement(sql);
			//第三步:設定引數
			for(int i=0;i<args.length;i++) {
				pst.setObject(i+1, args[i]);
			}
			rs = pst.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int columncount = rsmd.getColumnCount();
			//第五步:處理結果
			while(rs.next()) {
				//通過反射建立一個物件
				T t = clazz.newInstance();
				for(int i=0;i<columncount;i++) {
					//獲取列的別名,也是物件的屬性
					String columnlabel = rsmd.getColumnLabel(i+1);
					Field field = clazz.getDeclaredField(columnlabel);
					field.setAccessible(true);//設定屬性可見
					//給屬性賦值
					field.set(t, rs.getObject(i+1));
				}
				list.add(t);
			}
		} catch (InstantiationException | IllegalAccessException | NoSuchFieldException | SecurityException
				| IllegalArgumentException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//第六步:關閉連線
		close(con, pst, rs);
		return list;
		
	}
	
	
}

7.dao 模式和單例模式

1)單例模式 -- 整個應用只有一個例項

1)構造器私有化

2)對外提供static 訪問方法 -- 同步

3)懶漢和餓漢

package com.srr.dao;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * 單例模式-懶漢模式
 * @author shenrongrong
 *
 */
public class ConfigManage {
	private static ConfigManage configManage;//例項物件
	private static Properties  properties= new Properties();
	//構造器私有化 constructor
	private ConfigManage() {
		InputStream is =ConfigManage.class.getClassLoader().getResourceAsStream("data.properties");
		try {
			properties.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	//懶漢模式
	//提供獲取例項的方法
	public static synchronized ConfigManage getInstance() {
		if(configManage==null) {
			configManage = new ConfigManage();
		}
		return configManage;
	}

	
	//提供獲取配置的方法
	public static String getProperty(String key) {
		return getInstance().properties.getProperty(key);
	}
	
	
	
} 
package com.kh87.config;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/*
 * 單例模式-餓漢模式
 */
public class ConfigManager2 {
	private static ConfigManager2 configManage;//例項物件
	private static Properties  properties= new Properties();
	//餓漢模式
	static {
		if(configManage==null) {
			configManage=new ConfigManager2();
			InputStream is=ConfigManager2.class.getClassLoader().getResourceAsStream("data.properties");
			try {
				properties.load(is);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	//構造器私有化
	private ConfigManager2() {
		
	}
	//提供獲取例項化的方法
	public static synchronized ConfigManager2 getInstance() {
		return configManage;
	}
	//提供配置方法
	public static String getProperty(String key) {
		return properties.getProperty(key);
	}
}