一、oracle
1、子查询
- 用查询结果创建新表
- 合并查询union合并,union all合并(重复的不去掉),intersect交集,minus减(差集)
- 这种集合操作比and那些快很多,一般都是高手用的
2、创建新的数据库:
- 使用工具:dbca[数据库配置助手]
3、为什么要用分页查询这么麻烦呢?
- select * from testyao where numid < 10 and numid > 6;一句话不就搞定了吗?
- 分页(3层结构)
select * from (select a.*, rownum rn from (select * from testyao) a where rownum < 9) where rn > 6;
二、JSP
1、第一个jsp页面
- 显示当前时间:1.jsp
访问http://localhost:8080/day08/1.jsp<html> <head> </head> <body> <% java.util.Date date = new java.util.Date(); out.write(date.toLocaleString()); %> </body> </html>
2、jsp是怎么执行的
- 服务器访问jsp,实际上是在访问servlet。D:\apache-tomcat-7.0.55\work\Catalina\localhost\day08\org\apache\jsp\_1_jsp.java
- servlet用来响应请求产生数据,并把数据通过转发技术带给jsp,jsp用来显示数据
3、jsp语法
- jsp脚本表达式:专门用来输出数据<%=...%>
<html> <head> </head> <body> <% int x = 1; %> <%=x%> </body> </html>
- jsp脚本片段
<% 这里面是不能定义方法的,因为方法里面不能再有方法了 %> <%! 如果要定义方法,前面就加一个! %>
- jsp声明里面不能使用隐式对象
4、jsp注释
- jsp注释:<%-- --%>不会打给服务器
- <!-- -->服务器还是要把数据打给浏览器,虽然不会显示
5、jsp指令
- 三个指令:
<%@ 指令属性名="值" %> - page指令:
作用于整个jsp页面,最好放在整个jsp页面的起始位置。
会自动导一些包。包之间用“,”分割
session开关:默认是true,如session="false"
<%@ page errorPage="/errors.jsp" %> - jsp9大隐式对象:
普通的jsp只能获得8大隐式对象。
第九大对象要在page中定义了isErrorPage="true"才能用 - 使用page指令解决jsp中文乱码:(tomcat6没有这个乱码问题)
<%@ pageEncoding="gb2312" contenType="text/html; charset="gb2312" %>
通常<%@ pageEncoding="gb2312" %>就行了(记事本)
用eclipse就不用管乱码了。文件存的什么编码,就会通知引擎。 - include指令:静态包含。建议使用.jspf为后缀名
<%@ include file="/pulic/head.jsp"%>
<br>当前页面内容。<br>
<%@ include file="/pulic/foot.jsp"%>
也可以:
<%
request.getRequestDispatcher("/public/head.jsp").include(request, response);
%>
6、九大隐式对象
- 九大隐式对象:
Request
Response
Session
Application (servletContext)
Config(servletConfig)
Exception
Page(servlet)
pageContext
Out (printWriter jspWriter)
7、out隐式对象
- out隐式对象:
<%
out.write("aaaaa");
response.getWriter().write("bbbb");
%>
结果:先出现b,再出现a。
用jsp实现下载:1.jsp
在刷新网页的时候,抛好多异常:getOutputStream() has already been called for this response(因为两个流输出就冲突了,把html,空格都去掉控制台就没有异常了)。去掉之后:<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" import="java.util.*" %> <%@ page import="java.io.OutputStream" %> <%@ page import="java.io.FileInputStream" %> <html> <body> <% String path = application.getRealPath("/1.jpg"); String filename = path.substring(path.lastIndexOf("\\") + 1); response.setHeader("content-disposition", "attachment; filename=" + filename); FileInputStream in = new FileInputStream(path); int len = 0; byte buffer[] = new byte[1024]; OutputStream sout = response.getOutputStream(); while((len = in.read(buffer)) > 0) { sout.write(buffer, 0, len); } %> </body> </html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" import="java.util.*" %><%@ page import="java.io.OutputStream" %><%@ page import="java.io.FileInputStream" %><% String path = application.getRealPath("/1.jpg"); String filename = path.substring(path.lastIndexOf("\\") + 1); response.setHeader("content-disposition", "attachment; filename=" + filename); FileInputStream in = new FileInputStream(path); int len = 0; byte buffer[] = new byte[1024]; OutputStream sout = response.getOutputStream(); while((len = in.read(buffer)) > 0) { sout.write(buffer, 0, len); } %>
8、pageContext隐式对象
- 这个是jsp独有的对象。是jsp技术中最重要的一个对象。
通过它可以获得其他8大隐式对象。
生命周期是整个jsp页面 - 取数据的几种方式:1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" %> <% pageContext.setAttribute("data", "xxx耶耶", PageContext.SESSION_SCOPE); //取数据: //法1: // String data = (String)session.getAttribute("data"); //法2: // String data = (String)pageContext.getAttribute("data", PageContext.SESSION_SCOPE); //法3: String data = (String)pageContext.findAttribute("data"); //pageContext request session servletContext %> <%=data %>
- PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法。
方法接收的资源如果以“/”开头, “/”代表当前web应用。<% //request.getRequestDispatcher("/1.jsp").forward() 这个有点麻烦了 pageContext.forward("/test.jsp"); //访问1.jsp的时候跳转到test.jsp //pageContext.include(); 动态包含,不建议 %>
9、jsp标签(3个)
- 动态包含:
<jsp:include page="/public/test.jsp"/> <br/>这是页面内容<br/> <jsp:include page="/public/test.jsp"/>
- 静态包含:<%@include %>
- 它们的区别:动态包含,所有的都翻译成servlet;静态包含只翻译成一个servlet。
- 还可以这么写:
<% String url = "/public/test.jsp"; %> <jsp:include page="<%=url %>"/>
- param标签:
1.jsp:
test.jsp:<jsp:forward page="/test.jsp"> <jsp:param value="123456" name="num"/> </jsp:forward>
访问http://localhost:8080/day08/1.jsp显示:123456<% String value = request.getParameter("num"); %> <%=value %>
- 映射jsp:
访问http://localhost:8080/day08/1.jsp时,把1.jsp映射成1.html
。。。没映射起?<servlet> <servlet-name>xxx</servlet-name> <jsp-file>/1.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>xxx</servlet-name> <url-pattern>/7.html</url-pattern> </servlet-mapping>
10、jsp错误
三、4个域对象
1、4个域对象
- pageContext(称之为page域,页面范围内(jsp)全部取得出来)
- request(称之为request域,请求范围内)。如果客户机向服务器发请求,产生的数据,用户看完就没用了,像这样的数据存在request域中。如:新闻数据。
- session(称之为session域,会话范围内)。如果客户机向服务器发请求,产生的数据,用户用完了还有用,像这样的数据存在session域中。如:购物数据,用户需要看到自己的购物信息,并且还要用这个购物数据结账。
- servletContext(称之为application域,应用范围内)。如果客户机向服务器发请求,产生的数据,用户用完了,还要给其他用户用,像这样的数据存在servletContext域中。如:聊天数据。
- 选择容器:能够用小的就不要用大的。