2014.08.26 周三-oracle-jsp

一、oracle

1、子查询
  1. 用查询结果创建新表
  2. 合并查询union合并,union all合并(重复的不去掉),intersect交集,minus减(差集)
  3. 这种集合操作比and那些快很多,一般都是高手用的
2、创建新的数据库:
  1. 使用工具:dbca[数据库配置助手]
3、为什么要用分页查询这么麻烦呢?
  1. select * from testyao where numid < 10 and numid > 6;一句话不就搞定了吗?
  2. 分页(3层结构)
    select * from 
    	(select a.*, rownum rn from 
    		(select * from testyao) a where rownum < 9)
    	where rn > 6;

二、JSP

1、第一个jsp页面
  1. 显示当前时间:1.jsp
    <html>
    	<head>
    	</head>
    	
    	<body>
    		<%
    			java.util.Date date = new java.util.Date();
    			out.write(date.toLocaleString());
    		%>
    	</body>
    </html>
    访问http://localhost:8080/day08/1.jsp
2、jsp是怎么执行的
  1. 服务器访问jsp,实际上是在访问servlet。D:\apache-tomcat-7.0.55\work\Catalina\localhost\day08\org\apache\jsp\_1_jsp.java
  2. servlet用来响应请求产生数据,并把数据通过转发技术带给jsp,jsp用来显示数据
3、jsp语法
  1. jsp脚本表达式:专门用来输出数据<%=...%>
    <html>
    	<head>
    	</head>
    	
    	<body>
    		<%
    			int x = 1;
    		%>
    		
    		<%=x%>
    	</body>
    </html>
    
  2. jsp脚本片段
    <%		
    	这里面是不能定义方法的,因为方法里面不能再有方法了
    %>
    <%!
    	如果要定义方法,前面就加一个!
    %>
    
  3. jsp声明里面不能使用隐式对象
4、jsp注释
  1. jsp注释:<%-- --%>不会打给服务器
  2. <!-- -->服务器还是要把数据打给浏览器,虽然不会显示
5、jsp指令
  1. 三个指令:
    <%@ 指令属性名="值" %>
  2. page指令:
    作用于整个jsp页面,最好放在整个jsp页面的起始位置。
    会自动导一些包。包之间用“,”分割
    session开关:默认是true,如session="false"
    <%@ page errorPage="/errors.jsp" %>
  3. jsp9大隐式对象:
    普通的jsp只能获得8大隐式对象。
    第九大对象要在page中定义了isErrorPage="true"才能用
  4. 使用page指令解决jsp中文乱码:(tomcat6没有这个乱码问题)
    <%@ pageEncoding="gb2312" contenType="text/html; charset="gb2312" %>
    通常<%@ pageEncoding="gb2312" %>就行了(记事本)
    用eclipse就不用管乱码了。文件存的什么编码,就会通知引擎。
  5. include指令:静态包含。建议使用.jspf为后缀名
    <%@ include file="/pulic/head.jsp"%>
    <br>当前页面内容。<br>
    <%@ include file="/pulic/foot.jsp"%>
    也可以:
    <%
     request.getRequestDispatcher("/public/head.jsp").include(request, response);
    %>
6、九大隐式对象
  1. 九大隐式对象:
    Request
    Response
    Session
    Application (servletContext)
    Config(servletConfig)
    Exception
    Page(servlet)
    pageContext
    Out (printWriter jspWriter)
7、out隐式对象
  1. out隐式对象:
    <%
     out.write("aaaaa");
     response.getWriter().write("bbbb");
    %>
    结果:先出现b,再出现a。
    用jsp实现下载:1.jsp
    <%@ 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>
    在刷新网页的时候,抛好多异常: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" %><%
    		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隐式对象
  1. 这个是jsp独有的对象。是jsp技术中最重要的一个对象。
    通过它可以获得其他8大隐式对象。
    生命周期是整个jsp页面
  2. 取数据的几种方式: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 %>
  3. 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个)
  1. 动态包含:
    	<jsp:include page="/public/test.jsp"/>  
    	<br/>这是页面内容<br/>
    	<jsp:include page="/public/test.jsp"/>
    
  2. 静态包含:<%@include %>
  3. 它们的区别:动态包含,所有的都翻译成servlet;静态包含只翻译成一个servlet。
  4. 还可以这么写:
    	<%
    		String url = "/public/test.jsp";
    	%>
    	<jsp:include page="<%=url %>"/>
  5. param标签:
    1.jsp:
    <jsp:forward page="/test.jsp">
    		<jsp:param value="123456" name="num"/>
    	</jsp:forward>  
    test.jsp:
    		<%
    			String value = request.getParameter("num");
    		%>
    		
    		<%=value %>
    访问http://localhost:8080/day08/1.jsp显示:123456
  6. 映射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个域对象
  1. pageContext(称之为page域,页面范围内(jsp)全部取得出来)
  2. request(称之为request域,请求范围内)。如果客户机向服务器发请求,产生的数据,用户看完就没用了,像这样的数据存在request域中。如:新闻数据。
  3. session(称之为session域,会话范围内)。如果客户机向服务器发请求,产生的数据,用户用完了还有用,像这样的数据存在session域中。如:购物数据,用户需要看到自己的购物信息,并且还要用这个购物数据结账。
  4. servletContext(称之为application域,应用范围内)。如果客户机向服务器发请求,产生的数据,用户用完了,还要给其他用户用,像这样的数据存在servletContext域中。如:聊天数据。
  5. 选择容器:能够用小的就不要用大的。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值