第六章 Jsp隐式对像 Jsp的隐式对像有以下几个: A:out对像:主要用来进行输出 1)输出字符串:out.println("字符串") 2)输出Java脚本:out.println("<script>alert('我是真的爱你');</script>"); 3)输出Html标记:out.println("<a href=http://www.sina.com>新浪网</a>"); B:request对像:用来获取客户端的请求 1)request.getParameter("名字"):获取用户提交过来的请求 2)request.getParameterValues("名字"):获取单选框的值 3)request.getRemoteAddr():得到发送请求的主机名 4)request.getRequestURI():得到发送请求的Url C:Response对像:用来向客户端输出响应结果 1)response.setContentType("编码") 设置向客户端输出的文本的编码,一般设为"text/html; charset=GBK" response.setContentType("text/html; charset=GBK"); 如果不设置,可能会出现乱码 2)response.setHeader("refresh","1");使页面进行刷新 扩展:response.setHeader("refresh","5;URL=新页面"); 过5钞钟跳转到新的页面 3):response.sendRedirect("Index.html"); 使页面进行跳转 D:Session对像 E:application对像。相当于Serlvet上下文 F:PageContext对像。只能够在同一个页面里面使用。一般很少用 其中PageContext,request,session,application四种对像都可以通过 setAttribute()方法存储值,通过getAttribute()得到值 但是四种对像的范围不一样 PageContext(也被称为Page对像):一个页面中 Request:一次请求中 session:一次会话中 application:一个应用程序中 范围大小是:application>session>request>pageContext 举例: 1:举例显示会话计数、应用程序计数、页面计数的区别 2:做一个在线购物的例子 第七章 JavaBean和Jsp的标准动作 什么是JavaBean: 1)是一个可重复使用的软件组件 2)JavaBean实际上就是一个Java类,这个Java类可以重复使用 3)JavaBean在网站开发中一般用来封装业务层和数据库操作 4)虽然我们可以像开发一个普通Java类一样去开发一个JavaBean,但是JavaBean有它自己的规则 5)JavaBean的规则: A:是一个公有类 B:具有不带任何参数的构造函数 C:具有getXxx(),setXxx(),用来读取或写入Bean的属性(注意get与set一定要小写*******) 6)JavaBean与Java类之间的区别在于JavaBean有特定的规则,并且不需要继承自特定的类。而Java类一定要继承自特定的类。默认为Object类 为什么要使用JavaBean: 1:以前编写Jsp时,都是在HTML代码中夹杂着一大堆的 scriptlet---即java 代码段, 这样整个页面的可维护性,可复用性比较低 2:用javaBean可以有效的将HTML中夹杂的java 代码段剥离, 然后包装成一个可在多个页面复用的"逻辑处理组件",提高了页面 的可维护性,和可复用性 如何来编写JavaBean [选择File-->new-->general-->JavaBean] package demo; public class BeanSum { private int num1; private int num2; public BeanSum() { } public void setnum1(int num1) { this.num1=num1; } public void setnum2(int num2) { this.num2=num2; } public int getnum1() { return this.num1; } public int getnum2() { return this.num2; } public int sum() { return this.num1+this.num2; } } 说明: 1:在JavaBean中除了有set与get方法之外,还可以其它的方法 2:在JavaBean的方法的变量大小写要符合Java的命名规则: 如果只有一个单词,则全部小写,如果一个变量名或方法由多个单词构成 则除第一个单词小写外,其它的单词第一个字母一律大写 比如:shopName 不能写成 ShopName 或shopname setShopName 不能写成 SetShopName或setShopName 如何使用JavaBean A:嵌入 java 代码方式 <%@ page import="demo.BeanSum" %> 下边就可以像在 java 语言中那样用了: <% BeanSum demo=new TestBean(); demo.num1=10; //取属性是一定要取小写的num1,尽管定义时写的是大写] demo.num2=20; out.println(demo.sum()); %> 这一种方式也就完全把JavaBean当成了普通对像 B:使用 jsp 标记符方式 <jsp:useBean id="demo" class="demo.BeanSum" scope="session" /> 相当于 BeanSum demo=new TestBean(); <jsp:setProperty name="besum" property="num1" value="10" />相当于demo.num1=10; <jsp:setProperty name="besum" property="num2" value="20"/> 相当于demo.num2=20; <%out.println(demo.sum())%> 注意这一个代码要分开,因为这段代码既不是实例化JavaBean又不是属性。 C:感觉用"jsp 标记符方式"比起"嵌入 java 代码方式"困难,那是因为没有把JavaBean与表单元素结合起来 D:通过<jsp:setProperty name="demo" property = " * " /> 能够自动地把上一个页面提交过来的同名的表单元素的值赋给所有的属性 E:举例: 源页面:<input name="num1" type="text" id="num1" size="12"> 名字为num1 <input name="num2" type="text" id="num2" size="12"> 名字为num2 目的页面: <jsp:useBean id="demo" class="demo.BeanSum" /> <jsp:setProperty name="demo" property = " * " /> 会自动赋值 <%out.println(demo.sum())%> F:在通过jsp标记来使用JavaBean时,有一个关键字scope用来指定这个JavaBean的活动范围 Page:只能在其页面时使用,当页面刷新时,就会将其销毁,这是默认的情况 session:一直存在于会话中,也就是说可以被同个客户端的不同页面之间共享 application:能够给所有的客户端来共享 G:也就是说不同的页面可以通过 Bean 交互, 而你在一个页面中的普通类, 就没有这个功能。 Jsp的标准动作: 1:<jsp:setProperty>用来给JavaBean设置值 2:<jsp:getProperty>用来得到JavaBean属性的值 3:<jsp:forwad page="url">用来把页面跳转到page所指的页面。 与response.sendRedirect()的区别 1)response.sendRedirect()是在客户端进行跳转,地址栏中会出现新的页面的地址<jsp:forwad page="url">是在服务器端跳转,地址栏中依然是以前旧的地址。被称为跳转 2)<jsp:forwad page="url">是传递请求,所以这个请求到下一个页面依然可以使用, 而response.sendRedirect()是在跳转,请求在下一个页面不在可以使用 可以使用request.setAttribute来设置值。被称为"转发" 举例:让用户输入用户名和密码如果用户名正确则转到首页,如果错误则转到错误页面 4:<jsp:include page="url" flush="true"/>:用于把其它的页面合并到本页面 与<%@ include %>的区别: A:jsp:include是动作,而<%@ include %>是指令 B:jsp:include是在运行时进行合并,而<%@ include %>在编译时合并 Jsp:inclulde----->1.jsp--->编译-->servlet | |--->合并 2.jsp--->编译-->servlet | <%@include %>---->1.jsp-----| |--->合并--->编译 2.jsp-----| 举例:做一个JavaBean让用户输入商品名称,商品数量,折扣。 然后根据商品名称求出单价,根据数量与折扣求出应付款

评论