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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 下北街铁匠 初级黑马   /  2019-6-13 17:51  /  728 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

重点练习:

I/O流

数据库

1、数据库的增删改查语句

2、Java连接数据库服务器并操作(6步)

3、事务的四大特性:原子性、一致性、隔离性、持久性

4、JDBC

        Statement  和 preparedStatement的区别

5、数据库连接池

        1、c3p0

        2、Druid

前端

1、html、css的基本操作

2、javascript的基本操作

3、xml的操作,作为框架的配置文件(重点)

        约束方式、解析方式

两种设计模式

1、装饰设计模式(BufferInputStream缓冲流)

2、适配器设计模式

        一个接口有几个抽象方法,一个类实现这个接口重写所有抽象方法。类继承这个类,只需要重写所需要的抽象方法即可。

        例如:severlet 与httpseverlet类的实现;

servlet

请求转发的特点:

                1、浏览器地址栏不发生变化;

                2、只能转发到当前服务器的内部资源中;

                3、转发是一次请求;

                4、转发可以用request 对象共享数据。

request对象(域对象)的原理

                域对象:一个有作用范围的对象,可以在范围内共享数据。

                域对象内部是一个内存空间,内存空间为一个map集合。(一次请求一个map集合)

                map的方法:put( )添加,get( )获取,remove(  ) 移除。

                对应request对象的方法:SetAttribute(   )添加数据;GetAttribute(   ) 通过键获取值; RemoveAttribute(   )根据键移除数据。

补充:

转发目标路径:不需要虚拟目录,直接写/目标文件,即可,但是在WEB-INF文件夹中时,要写成/WEB-INF/目标文件。

重定向的特点

                重定向http状态码(302、307)

                1、重定向地址栏会发生改变

                2、重定向可以访问其他站点(服务器)的资源。

                3、重定向是两次请求。不能使用request对象共享数据。

重定向(redirect)和转发(forward)的区别(面试题)



BeanUtils工具类,简化数据封装

        注意:该工具类需要导包

- 用于封装JavaBean的       
  1、JavaBean:标准的Java类
          1、要求:
                  1、类必须被public修饰
                  2、必须提供空参的构造器
                  3、成员变量必须使用private修饰
                  4、提供公共setter和getter方法
          2、功能:封装数据

2、概念:

        成员变量:

        属性:setter和getter方法截取后的产物

例如:getUsername() --> Username--> username

方法:

        setProperty()

        getProperty()

        populate(Object obj , Map map):将map集合的键值对信息,封装到对应的JavaBean对象中。

相对路径、绝对路径

        相对路径:不以“/''开头的路径

        绝对路径:

        转发不需要虚拟路径名,重定向需要虚拟路径名。

服务器输出到浏览器

解决乱码问题(*重要):

        在获取流操作前写以下语句:

        response.setContentType("text/html;charset=utf-8")

ServletContext 对象

功能

1、获取MIME类型;

2、域对象:共享数据;

        含有setAttribute(),getAttribut(),removeAttribute()方法

3、获取文件的真实(服务器)路径。

                        文件在Web目录下路径:“/b.txt”;

                        文件在WEB-INF目录下路径为:“/WEB-INF/c.txt"

                        文件在src文件夹下路径:“/WEB-INF/classes/a.txt";

                        获取无服务器真实路径:       

    ServletContext context =        this.getServletContext();
    String realPath=context.getRealPath("/b.txt按上述规则填入地址值");

        注意:采用ClassLoader只能读到src目录下的文件,其他地方的文件夹无法访问。       

        注意:由于作用域广(所有Web应用)一个服务器只能创建一个ServletContext,且该对象域作用时间长(直到服务器关闭)所以能不用就不用。

文件下载的示例代码:

        需求:将文件以附件形式在浏览器输出(下载)。设置文件名编码,解决中文文件名乱码的问题。

    @WebServlet("/downloadServlet")
    public class Demo6 extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String filename = req.getParameter("filename");
            //获取要复制文件的真实路径:
            ServletContext servletContext = this.getServletContext();
            String realPath = servletContext.getRealPath("/Imag/"+filename);
            //通过真实路径创建字节输入流。
            FileInputStream fis = new FileInputStream(realPath);
            // 设置传输文件的类型
                //获取MIME类型对象
            String mimeType = this.getServletContext().getMimeType(filename);
            resp.setHeader("content-type",mimeType);
            //解决文件名中的中文乱码问题:
                //获取user-agent请求头;
            String agent = req.getHeader("user-agent");
                //使用工具类编码文件名,重新返回文件名。
             filename = DownLoadUtils.getFileName(agent, filename);
            //设置响应头让浏览器以附件的形式输出图片(下载)
            resp.setHeader("content-disposition","attachment;filename="+filename);
            //通过response创建字节输出流
            ServletOutputStream os = resp.getOutputStream();
            //通过字节数组将输入流中的数据写入的字节输出流中。
            byte[] bytes = new byte[1024*8];
            int len;
            while ((len=fis.read(bytes))!=-1){
                os.write(bytes, 0, len);
            }
                fis.close();
        }
   
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doPost(req, resp);
        }
    }
   

用到的request请求头文件

        1、user-agent

用到的response响应头文件

        1、content-disposition: attachment;filename 以附件形式让浏览器输出。

Cookie(类)

        作用:

                用于数据共享。

        实现原理:

                基于响应头set-cookie和请求头cookie实现。

        示例:

    Cookie cookie = new Cookie("p","ppp");
    response.addCookie(cookie);
    //等同于设置响应头: response.setHeader("set-cookie","p=ppp");

        Cookie的细节

                1、可以一次发送多个cookie;可以创建多个Cookie对象,使用respnse调用多次addCookie方法发送cookie即可。

                2、cookie默认情况下当浏览器关闭后,Cookie数据被销毁。

JSP

        原理

        JSP的本质就是一个Servlet;

Session(重点)

       

0 个回复

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