A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

JDBC---JSP笔记


JDBC的事务管理:
事务的管理的对象:Connection conn


事务管理的核心的思想:
逻辑上的一组操作使用的是同一个Connection对象


事务管理的核心步骤:
开启事务:conn.setAutoCommit(false)


业务逻辑的操作
所有的业务逻辑操作都成功后提交事务:conn.commit()
一旦有异常回滚事务:conn.rollback()


连接池
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>


DBUTILS(web阶段使用)
增删改
    QueryRunner qr = new QueryRunner(DataSource dataSource)
    qr.update(String sql,Object ... obj)
查询
    QueryRunner qr = new QueryRunner(DataSource dataSource)
    qr.query(String sql,各种Handler,Object...obj)
     结果集类型:
            BeanHandler
            BeanListHandler
            MapHandler
            MapListHandler
            ScalarHandler:Long


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
访问规则:
如果要访问一个servlet,这个地址串跟web.xml中配置的url-pattern有关系


生命周期:
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.
任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.
在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).
当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.


程序优化的思想:
一次性的资源的加载(耗时的操作)放到服务器启动的时候


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);


文件下载:
把一个文件从服务器读取,写到客户端
文件下载的核心思想: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")


转发和重定向:
转发:
        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) 单位是:秒
作用范围:默认是一次会话,关闭浏览器就销毁
关于cookie存储中文的问题:
    往回写cookie:
    String value = URLEncoder.encode("老谭", "UTF-8");//"老谭"--fadsf%%33
    Cookie cookie = new Cookie("aa",value);
    response.addCookie(cookie);
    获得:
    Cookie [] cookies = request.getCookies();
    Cookie aa= CookieUtils.findCookie(cookies, "aa");
    if(aa!=null){
        String value = aa.getValue();//fadsf%%33--"老谭"
        String a = URLDecoder.decode(value, "utf-8");
    }


Session
如何获得:HttpSession  session  = request.getSession();
作为域对象存取数据
session.setAttribute(String name,Object value);
Object vlaue = session.getAttribute(String name);
removeAttribute(String name);
范围:一次会话(根本原因:存SesssionID的cookie默认是会话级别的)
配置sessionion过期时间:web.xml
     <session-config>
         <session-timeout>5</session-timeout> <!--单位是分钟-->
    </session-config>


JSP
三大指令:
        1.page:
                全局错误友好页面的配置
      <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
      </error-page>
      <error-page>
        <error-code>500</error-code>
        <location>/500.jsp</location>
      </error-page>


        2.include:   <%@ include file="" %> 静态包含
        3.taglib:导包用


九大内置对象:
    request           HttpServetRequest
    response        HttpServetResponse
    session           HttpSession
    application     ServletContext
    page              Object
    out                 JspWriter
    pageContext       PageContext
    config            ServletConfig
    exception      Throwable

动作标签:
<jsp:forward page=""> /jsp:forward
<jsp:include page="">/jsp:include :动态包含
静态包含和动态包含的区别:
静态包含:相当于源代码的拷贝,只会翻译成一个Java类,有一个执行结果
动态包含:各自分别去翻译,各自执行,最终包含的是执行的结果


EL与JSTL
EL获取数据:
以什么名字存到域中,就以什么名字取出来,存进去是什么类型的,取出来就是什么类型
数组,List[]  ----遍历
map,java对象:.  .属性
EL执行运算
empty:判断是否为空
not empty:判断是否不为空


EL操作常用的web对象
${cookie.名字.value}
${pageContext.request.contextPath}


JSTL的中判断
    <c:if test="${}">
        test:如果test返回true,标签内的内容就会被输出
    </c:if>
    if标签没有else,如果想表达else的情况,从条件着手


JSTL中的遍历:
    <c:forEach var="" items="" varStatus="status">
        status.index
        status.count
    </c:forEach>
    <c:forEach var="" begin="" end="" step="" varStatus="status">
    </c:forEach>

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马