JDBC
模糊查询时,用整个?代替条件:
String sql="select * from user where nickname like ?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,"%小%");
rs.getXXX(String columnName)
columnName默认是表的字段名,如果取了别名用别名.
事务:核心步骤
1.conn.setAutoCommit(false);
2.conn.commit();
3.conn.rollback();
核心思想:
业务逻辑操作使用同一个Collection对象.
BeanHandler:
1.当表字段和bean字段对应不上的时候,采用表字段取别名的方式匹配封装.
2.使用默认的构造方法.如果非要重载构造方法,记得把无参构造加上.
3.bean中真正操作字段的是get/set方法.
ScalarHandler:返回值类型为long.
XML
XML解析方式:
1.DOM:一次性将整个文档加载到内存,进行树形结构解析.
缺点:如果文档特别大,容易导致内存溢出
优点:对XML进行增删改的操作
2.SAX:事件驱动方式,一行一行进行解析.
缺点:不能对文档进行增删改的操作
优点:如果文档特别大,不会导致内存溢出
针对这两种解析方式提供了DOM4J,JDOM等API.
dom4j的XPath支持的API:
List document.selectNodes(String xPath);
Node document.selectSingleNode(String xPath);
XML的约束的种类及区别:
DTD和Schema:
1.DTD语法是自成一体的,Schema语法就是XML的语法.
2.Schema的语法就是XML的语法,所以更容易被解析器解析.
3.Schema支持名称空间
4.Schema有比DTD更加强大的语义和语法的约束.
parse:解析
Tomcat和Servlet
C/S架构:(Client/Server)客户端/服务器,安装在PC端
优点:效果炫,部分代码写到客户端,速度快.
缺点:服务器端更新,客户端更新
B/S架构:(Browser/Server)浏览器/服务器,需要浏览器
优点:服务端更新,客户端浏览器不需要更新
缺点:效果不炫,所有代码都运行在服务器端,服务器压力大.
解决办法:1.效果:使用HTML5,CSS3可以做出很炫的效果
2.服务器端压力:搭建服务器的集群,AJAX技术.
Tomcat目录结构:
bin:执行文件
conf:配置文件
lib:运行需要的jar包
logs:日志文件
temp:临时文件
webapps:发布的web项目
work:class文件,JSP翻译成的servlet类的class文件
发布web项目到tomcat中的方法:
1.将工程复制到webapps目录
2.配置tomcat/conf/sever.xml文件,在<Host>标签下配置:
<Context path="/aaa" docBase="项目路径"/>
3.在tomcat/conf/Catalina/localhost/aaa.xml配置:
<Context docBase="项目路径"/>
aaa为虚拟路径的名称.
Tomcat常见问题:
tomcat一闪消失
没有配置JAVA_HOME环境变量
端口号冲突
1.通过任务管理器,将占用端口的应用结束.
2.修改自身应用的端口号,tomcat/conf/server.xml
HTTP协议请求:
1.get/post的区别:get提交的参数显示到地址栏,在请求行中地址后面;post提交的参数在请求体重.
2.get有大小限制,post没有
3.get没有请求体,post有
常见请求头:
User-Agent:浏览器的类型. 用于文件下载:下载中文文件:IE使用URLEncodor进行编码,而Firefox使用Base64编码.
Referer:网页来源. 用于防盗链.
If-Modified-Since:与响应头Last-Modified一起使用查找本地缓存.
HTTP协议响应:
常见状态码:
200:成功
302:重定向(结合location响应头使用)
304:查找本地缓存
404:路径错误;资源真的不存在
500:服务器内部错误(代码写错了)
常见响应头:
Location:结合302做重定向
Content-Disposition:文件下载的时候用
Refresh:定时刷新
Servlet访问规则:Http://ip:port/projectName/地址串
如果要访问一个servlet,这个地址串跟web.xml中配置的url-pattern有关系
String request.getParameter(String name)
String[] request.getParameterValues(String name);
Map<Strnig,String[]> request.getParameterMap();
WEB_INF下的文件不能直接访问.
servlet生成的class文件在tomcat项目中webapps下的WEB_INF文件加下.
servlet
Servlet生命周期.
当用户第一次访问servlet时,服务器创建servlet执行init方法.
任何一次访问都会创建新的线程访问service()方法,在service()方法中根据请求方式的不同调用不同的doXxx()方法.
当关闭服务器时servlet被销毁执行destroy()方法.
在整个servlet生命周期过程中,service有且仅有一个.是单例的.
*有一些资源初始化很耗时,这就需要在web.xml配置对其进行配置(放到服务器启动的时候),进行程序优化.
比如servlet第一次初始化时很费事,需要在<servlet></servlet>配置<load-on-startup>2</load-on-startup>传入整数越小,被创建的优先级越高.
配置方式访问规则:完全路径>目录>扩展名.
完全路径匹配:以/开头 /aaa
目录匹配:以/开头,以*结尾 /aa/*
扩展名匹配:不能以/开头,以*开头 *.do *.action
路径问题:
相对路径:不能以/开始
绝对路径:以/开始,
客户端路径:/项目名/资源
服务器端路径:/资源(用于资源间转发和重定向)
response用法:
setHeader(String name,String value);针对一个key对应一个value的响应头.
setDateHeader(String name,long date);
setIntHeader(String name,int value);
setStates(302):重定向
refresh:配合setHeader完成定时页面跳转,例如:setHeader("refresh","5;url=路径");
setContentType("text/html;charset=utf-8");
ServletContext:
1.作为域对象存取数据
范围:整个web工程
服务器启动时,tomcat为每个web项目创建一个单独ServletContext对象.
服务器关闭时,或项目被移除时,该对象被销毁.
2.用来读取web项目下的文件.
3.用来获得全局初始化参数
4.用来获得文件的MIME类型
F5进入该行方法,F6运行下一行,F8调到下一个断点.
request和response
web项目不要写相对路径.Tomcat启动路径是在bin目录下,相对于bin目录.
src下的文件用绝对路径 /WEB-INF/classes/文件名
ServletContext读取文件的方法:
1.文件下载:
getResourceAsStream()返回inputStream 直接装载到prop
getRealPath()返回字符串 再new FileInputStream()装载到prop
在非servlet文件中读取web项目的文件,用类加载器.
类.class.getClassLoadder().getResourceAsStream("文件名") 返回值inputStream
类加载器的文件路径是在classes目录下
设置浏览器编码:
response.setHeader("Content-Type","text/html;charset=utf-8")
2.读取全局变量
getInitParameter(String name)
getInitParameterNames()
3.获取MIME类型
getMimeType(String file)
4.域对象存取数据
setAttribute()
getAttribute()
removeAttribute()
response:
setStatus()
setHeader()
getOutputStream()
getWriter()
request:
1.获得客户机信息:
getMethod()
getRequestURI()
getRequestURL()
getRemoteAddr()
getContextPath()
2.获得页面提交的参数
getParameter()
getParameterMap()
getParameterNames()
getParameterValues()
3.域对象存取数据
setAttribute()
getAttribute()
removeAttribute()
重定向和转发的区别(redirect和forward的区别):
1.地址栏
2.响应次数
3.路径(前者加工程名,后者不用加)
4.访问范围(后者这能访问项目)
request.getRequestDispatcher("不写项目名的路径").forword(request,response);
response.sendRedirect("绝对路径");
Cookie
常用API:
getName()
getValue()
setDomain(String domain)
setPath(String path)
setMaxAge(int age)单位是秒
Cookie存取中文问题:
通过URLEncoder和URLDecoder完成.
存中文:
String value=URLEncoder.encode("中文","utf-8");
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();
String a =URLDecoder.decode(value,"utf-8");
}
销毁Cookie:
会话级别:关闭浏览器,Cookie就会被销毁
持久级别:销毁
Cookie cookie=new Cookie("lastVisit",null);
cookie.setPath("/day11");
cookie.setMaxAge(0);
response.addCookie(cookie);
session
jsp中导包:alt+/
在web.xml配置session过期时间:默认为分钟
<session-config>
<session-timeout>5</session-timeout>
</session-config>
获得session:
request.getSession();
创建:第一次调用getSession时创建
销毁:
1.默认30分钟session失效
2.非正常关闭服务器.正常关闭session序列化到硬盘,开启后又会加载到服务器.
3.调用session.invalidate()
作用范围:多次请求(一次会话)
EL
功能:
1.获取四个域对象中的数据
${pageScope.name}
${requestScope.name}
${sessionScope.name}
${application.name}
2.执行运算
3.操作web开发中的对象
pageScope,requestScope,sessionScope,application JSP中域数据.
param,paramValues 接受参数
header,headerValues 获取请求头信息
initParam 获取全局初始化参数
cookie 获取cookie
${cookie.名字.value}获取cookie
pageContext web开发中pageContext
${pageContext.request.contextPath}获取工程路径
4.调用java方法
有特殊符号用[]调用参数.
<c:forEach var="" begin="" end="" step="" varStatus="aaa"> aaa.count存放的个数 aaa.Index存放的索引.
|
|