重点练习:
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(重点)
|
|