学习笔记
DBUTILS ---->web阶段创建JDBCUtils工具类 使用c3p0连接池连接池可以使用的工具
//创建连接池
private static final ComboPooledDataSource dataSource =new ComboPooledDataSource();
//获得连接方法 从连接池中获取
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
//创建一个获取连接池的方法
public static DataSource getDataSource(){
return dataSource;
}
//释放资源
public static void release(Connection conn, PreparedStatement ppttm, ResultSet rs ){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if (ppttm != null) {
try {
ppttm.close();
} catch (SQLException e) {
e.printStackTrace();
}
ppttm = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
public static void release(Connection conn, PreparedStatement ppttm){
if (ppttm != null) {
try {
ppttm.close();
} catch (SQLException e) {
e.printStackTrace();
}
ppttm = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}增删改QueryRunner qr = new QueryRunner(DataSource dataSource)
qr.update(String sql,Object ... obj)查询 BeanHandler
//查询一条记录到数组中 使用BeanHandler
public void demo3() throws SQLException {
QueryRunner qr = new QueryRunner(JDBCUtils3.getDataSource());
Usb usb = qr.query("select * from usb where id =?", new BeanHandler<Usb>(Usb.class), 12);
System.out.println(usb);
}
//查询多条到集合中 使用BeanHandler
public void demo4() throws SQLException {
QueryRunner qr = new QueryRunner(JDBCUtils3.getDataSource());
List<Usb> list = qr.query("select * from usb", new BeanListHandler<Usb>(Usb.class));
for (Usb usb : list) {
System.out.println(usb);
}
}
使用ScalarHandler
//查询单列的记录 使用 ScalarHandler 返回 long 类型的值
@Test
public void demo7() throws SQLException {
QueryRunner qr = new QueryRunner(JDBCUtils3.getDataSource());
Object object = qr.query("select count(*) from usb", new ScalarHandler());
System.out.println(object);
}
w使用MapHandler
//查询单条存入到 Map集合
public void demo5() throws SQLException {
QueryRunner qr = new QueryRunner(JDBCUtils3.getDataSource());
Map<String, Object> map = qr.query("select * from usb where id=?", new MapHandler(), 13);
System.out.println(map);
}
//查询多条到 Map 集合并将对象存到List 集合
public void demo6() throws SQLException {
QueryRunner qr = new QueryRunner(JDBCUtils3.getDataSource());
List<Map<String, Object>> list = qr.query("select * from usb ", new MapListHandler());
for (Map<String, Object> map : list) {
System.out.println(map);
}XML解析:DOM4j+Xpath导入两个jar包: dom4j-1.6.1.jar jaxen-1.1-beta-6.jar
SAXReader sr = new SAXReader()
Document document = sr.read("代表这个xml文档的流");
List<Node> list = document.selectNodes(String xpathExpression)
遍历出每个要找的
.getText()';就是其中的值'
Node node = document.selectSignalNode(String xpathExpression)
xpathExpression:
//元素名称
//元素名称[@属性名称]
//元素名称[@属性名称='属性值']request&response文件下载 response 概述:代表响应的对象,从服务器向浏览器输出内容 常用API HttpServletResponse类 响应行 响应头 addDateHeader addHeader addIntHeader setDateHeader setHeader setIntHeader
响应体: 方法在ServletRespose类中 getOutputStream getWriter
文件下载方式 文件下载的核心思想
中文文件下载 iso-8859-1:缓存区默认编码标准 IE浏览器采用的编码方式是URL 火狐浏览器采用的编码方式是base64
response 输出响应内容的方法 向页面响应的方法 字节流 response.getOutputStream().write("内容".getBytes())-->不是中文 response.getOutputStream().write("内容".getBytes(字符集编码));这个编码在设置之前先设置浏览器打开时采用的编码方式,这两种方式要一样.如果本来就一样就不会乱码,如果不一样就会乱码. 步骤
字符流 response.getWriter()-->不是中文 一定会乱码,response使用的字符流有缓冲区的.这个缓冲区的默认的编码是ISO-8859-1,这个编码方式不支持中文. 解决方式 步骤 设置浏览器打开的时候的编码 设置response的缓冲区的编码
request cookie和session(会话技术)(把数据保存到会话中)cookie : 将数据保存到客户端浏览器(分为会话级别的 和 持久级别) ------>会话: 关掉浏览器就销毁 持久--->按设置的时间销毁
#// 向浏览器保存数据 HttpServletResponse 中的方法
void addCookie(Cookie cookie);
#// 获得浏览器带过来的 cookie HttpServletRequest中的方法
cookie[] getCookies();
#// 创建一个cookie对象
Cookie cookie = new Cookie(String name , String value);
#// 获取cookie中的name值
String name = cookie.getName();
#//获取cookie中的value值
String value = cookie.getValue();
// void setDumain(String pattern); 设置cookie的有效路径 不常用
#//设置cookie的有效路径 (可以用来移除设置的有效时间 要求cookie的Name相同 路径相同 setMaxAge(0))
void setPath("/一般是项目的根目录");
#//设置cookie的有效时间
void setMaxAge(xxx); xxx=设置的时间 以秒为单位 ;
当值设置成0 的时候可以移除 设置的有效时间 需要和setPath(/day_2???);使用 有效路径和name要和设置的时候保持一致JSP:JSP脚本元素(嵌入的JAVA代码):< %! % > 翻译成类中的成员部分 ,定义方法 定义变量,定义类 , 因为servlet 线程安全问题 所以不常用; < % % > 翻译成service方法内部的内容 可以是 成员方法 类等 ... 可以直接写代码 因为是在service中可以使用 Response 和 Request < %= % > 相当于输出里面的内容
JSP注释 什么样的代码用什么样的注释!!!~~~HTML注释不能注释JAVA代码JSP指令 3大指令 JSP内置对象 9大内置对象 可以在JSP中直接使用的对象 request HttpServetRequest
response HttpServetResponse
session HttpSession
application ServletContext
page Object
out JspWriter
pageContext PageContext
config ServletConfig
exception Throwable技能 拔高点:pageContext: 1.获取其他8个内置对象:getXXX()方法 2.可以向四个域中存取数据:
pageContext.setAttribute("pname", "pvalue", PageContext.PAGE_SCOPE);
pageContext.setAttribute("rname", "rvalue", PageContext.REQUEST_SCOPE);
pageContext.setAttribute("sname", "svalue", PageContext.SESSION_SCOPE);
pageContext.setAttribute("aname", "avalue", PageContext.APPLICATION_SCOPE);
<%= pageContext.getAttribute("pname", PageContext.PAGE_SCOPE) %>
<%= pageContext.getAttribute("rname", PageContext.REQUEST_SCOPE) %>
<%= pageContext.getAttribute("sname", PageContext.SESSION_SCOPE) %>
<%= pageContext.getAttribute("aname", PageContext.APPLICATION_SCOPE) %>JSP动作标签 一系列动作标签 静态包含和动态包含的区别(面试点四)
静态包含:相当于源代码的拷贝,只会翻译成一个Java类,有一个执行结果
动态包含:各自分别去翻译,各自执行,最终包含的是执行的结果
session : 将数据保存到服务器端
web.xml设置过期时间
<session-config>
<session-timeout>5</session-timeout> <!--单位是分钟-->
</session-config>Session作为域对象存取数据创建对象的方法 HttpSession session = request.getSession();session.setAttribute(String name,Object value);Object vlaue = session.getAttribute(String name);removeAttribute(String name); EL&JSTL与MVCELEL的概述Expression Language 表达式语言EL的作用简化JSP的代码,而且减少<% % >使用EL表达式语法: ${EL表达式 }EL的功能获取数据: ${ name } 相当于 pageContex.findAttribute(name).优先级也一样page > request > session > application JSTL作用:版本JSTL1.0 :不支持EL表达式JSTL1.1和1.2 :支持EL表达式 使用JSTL由JSTL提供的EL函数库 主要是用来处理字符串的引入一个新的标签库以fn开头 ${ fn: contains("Hello World","Hello")${ fn: length(字符串) }${fn:toLowerCase(字符串)}....
MVC 设计模式模式二也叫做MVC模式
|