黑马程序员技术交流社区

标题: 【石家庄校区】连接池_DbUtils_Servlet_Cookie笔记总结 [打印本页]

作者: 爪了个哇的    时间: 2018-5-21 15:03
标题: 【石家庄校区】连接池_DbUtils_Servlet_Cookie笔记总结
本帖最后由 爪了个哇的 于 2018-5-21 15:04 编辑

连接池_DbUtils_Servlet_Cookie笔记总结



连接池druid/c3p0

1.导包
2.配置文件:在classpath下默认有个一个文件叫 c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql:///web_test4</property>
        <property name="user">root</property>
        <property name="password">tsmysql</property>
        
        <property name="initialPoolSize">5</property>
        <property name="minPoolSize">5</property>
        <property name="maxPoolSize">20</property>
    </default-config>
</c3p0-config>
3.java

ComboPooledDataSource dataSource = new ComboPooledDataSource();DBUTILS(web阶段使用)增删改
QueryRunner qr = new QueryRunner(DataSource dataSource)
qr.update(String sql,Object ... obj)查询XML解析:DOM4j+Xpath
SAXReader sr = new SAXReader()
Document document =  sr.read("代表这个xml文档的流");
List<Node> list = document.selectNodes(String xpathExpression)
Node node =  document.selectSignalNode(String xpathExpression)
xpathExpression:
    //元素名称   
    //元素名称[@属性名称]
    //元素名称[@属性名称='属性值']
   
    tomcat部署
1.如果要用虚拟路径:
​        tomcat\conf\Catalina\localhost:新建一个xxx.xml ,写  <Context  docBase=""/>   访问路径:xxx
2.将项目导出成war包,直接扔到webapps下
协议请求
1.get/post的区别:
​        get提交的参数显示到地址栏,在请求行中地址后面;post提交的参数在请求体中
​        get有大小的限制,post没有
​        get没有请求体,post有
2.常见的请求头:
​        User-agent:浏览器的类型
​        Referer:防盗链
响应
1.常见的状态码:
​        302:重定向(结合Location响应头使用)
​        304:查找本地缓存
​        404:路径错误,资源真的不存在
​        500:代码写错了
2.常见的响应头:
​        Location:结合302做重定向
​        Content-Disposition:文件下载的时候用
​        Refresh:定时刷新
Servlet访问规则:
http://ip:port/projectName/地址串
如果要访问一个servlet,这个地址串跟web.xml中配置的url-pattern有关系
生命周期(面试点一)
一定要会表述:
程序优化的思想:
一次性的资源的加载(耗时的操作)放到服务器启动的时候
url-pattern的配置方式
1.完全路径匹配:以/开头     /aaa                                            http://ip:port/projectName/aaa
2.目录匹配:以/开头 以*结尾         /aa/ *                               http://ip:port/projectName/aa/fadsfadfda
3.扩展名匹配:不能以/开头 以*开头     *.do  *.action          http://ip:port/projectName/afdafdadfadsfadf.do
优先级关系:根本的原因,一次请求只有一次响应
完全路径匹配 > 目录匹配 > 扩展名匹配
ServetContext
如何获得:在有servlet的环境下:this.getServletContext();
范围:整个web应用的范围
域对象存取数据
setAttribute(String name,Object value);
Object      getAttribute(String name);
removeAttribute(String name)
读取web项目下的文件
1.有servlet的环境下:
​        InpuptStream getResourceAsStream(String path);
​        String getRealPath(String path);
2.如果没有servlet的环境:
​        用类加载器去读取文件:
​        InpuptStream  is = 当前类的类名.class.getClassLoader().getResourceAsStream(String name);
企业级工具类的一个编写思想Response文件下载
把一个文件从服务器读取,写到客户端
文件下载的核心思想:io 读/写的操作
InpuptStream is = new FileInputStream("服务器上的路径");
OutputStream os = response.getOutputStream();
模板代码:

int len = 0;
byte[] b = new byte[1024];
while((len = is.read(b))!= -1){
    os.write(b, 0, len);
}
is.close();
Content-Type: getServletContext().getMimiType(String filename);Content-Disposition:"attachment;filename="+filename;
响应乱码
response.getOutputStream():文件下载
下列方式:以后不常用
response.getWriter().print("");这种乱码问题如何解决:response.setContentType("text/html;charset=UTF-8");  
Request获取客户端信息
1.请求方式:request.getMethod();
2.请求ip:request.getRemoteAddr();
3.获取工程名:request.getContextPath();
获取表单参数
String request.getParameter(String name);
String [] request.getParameterValues(String name);
Map<String,String[]> request.getParameterMap();
请求乱码
get:
​        String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")
post:
​        request.setCharacterEncoding("UTF-8")
作为域对象存取数据
范围:一次请求和响应的范围
setAttribute(String name,Object value);
Object      getAttribute(String name);
removeAttribute(String name)
转发和重定向(面试点二)
转发:
​        request.getRequestDispatcher("不带工程名的路径").forward(request,response)
重定向:
​        response.sendRedirect("带工程名称的路径")
区别:
1.地址栏:转发地址栏不变,重定向会变
2.请求响应的次数:转发一次请求一次响应,重定向是两次请求和响应
​        如果给request域中存放了数据:转发能够获得到数据,重定向不能获得到数据
3.路径的编写:转发不带工程名,重定向带工程名
4.跳转的范围:转发只能在当前工程下跳转,重定向可以跳转至任意网页
Cookie
如何获得:Cookie[] cookies = request.getCookies();
如何向客户端写cookie:response.addCookie(Coookie cookie)
如何创建cookie:Cookie cookie = new Cookie(String name,String value);
​        获得名字:cookie.getName()
​        获得值:cookie.getValue();
​        设置路径:cookie.setPath(String path);
​        设置有效期:cookie.setMaxAge(int age) 单位是:秒
作用范围:默认是一次会话,关闭浏览器就销毁
WEB未完待续!!






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2