Java dom4j 解析Xml 案例
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 |
|
要實現從JS物件轉換為JSON字串,使用 JSON.stringify() 方法:
1 |
|
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);
}
}