2020-11-5 JSP 学习笔记

JSP笔记

行为元素

<jsp:useBean>

<jsp:useBean>行为元素的作用是使一个JavaBean组件在该页可用,使用这个动作,可以动态使用 javabean组件来扩充JSP的功能
<jsp:useBean>首先会尝试定位Bean实例,在 scope属性指定的作用域使用指定的名称
(id属性值)定位Bean对象,如果其不存在,则依据class名称(class属性指定)或序列化模板
(beanName)属性指定)进行实例化
语法格式:

<jsp:useBean id = "name" scope="page|request|session|application" class=" className "/>

1,id="name"一个用来标识定位作用域的变量。可以在JSP文件的表达式或小脚本应
用程序中使用该变量名称。该名称大小写敏感,必须符合JSP页面中脚本语言的命名规则
假如使用的是Java语言,则该名称遵守的是Java命名规范。假如该Bean对象已由其它
<jsp:useBean>元素创建,则该值必须和实例化该Bcan对象的<< jsp:usebean>>元素id属性值一
致,才能实现定位到该Bean对象。
2.scope=“page I request I session I application”.Bean对象存在的作用范围默认值为
page.不同作用域解释如下:
(1)page:< <jsp: use Bean>>元素所在JSP页面成其静态包含页面使用该 Javabean对象
直到该项面发送响应回客户端或跳转( forwards)至其它页面。
(2) request:可以在处理同一个请求的任意一个页面使用该 JavaBean对象,直到该页
面发送响应回客户端或产生新的请求。
(3) scssion:可以在同一次会话的任意一个页面使用该 Javabean对象,该 Javabean
对象在整个会话期间一直存在。使用<jsp:useBean>创建 Javabean对象的页面的<%@page%>
指令元素的 session属性值必须设置为true。

首先,先确保之前的java类cap.bean包的Admin.java在哪个项目内。
在这里插入图片描述
在该项目下,新建一个新的jsp文件(jspusebean.jsp)。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 下面这行代码的作用相当于:Admin admin=new Admin(),其中指令admin对象的范围为page -->
<jsp:useBean id="admin" scope="page" class="cap.bean.Admin"></jsp:useBean>
<!-- 下面这行代码相当于admin.setUsername("***") 和admin.setPassword("xxxxx) -->
<jsp:setProperty property="*" name="admin"/>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type"  content ="text/html; charset=UTF-8">
<title>jsp usebean的使用</title>
</head>
<body>
用户名:<jsp:getProperty property="username" name="admin"/><br>
密码:<jsp:getProperty property="password" name="admin"/><br>
</body>
</html>

再创建一个JSP文件(input.jsp)来使用<jsp:useBean>行为元素。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta  http-equiv="Content-Type"  content ="text/html; charset=UTF-8">
<title>jsp usebean 的使用</title>
</head>
<body>
<form action="jspusebean.jsp" method = "post">
<input type="text" name="username">
<input type="text" name="password">
<input type ="submit" value = "提交" >
</form>
</body>
</html>

运行结果
运行结果1

运行结果2
运行结果3

JSP对象

JSP对象包括内置对象和非内置对象(需要通过new关键字创建的对象),内置对象就
是可以不加声明和创建就可以在JSP项面脚本、中使用的成员变量,常用的内置对象包括
out对象、 request i对象、 response対象、 session对象,page对象、 application对象、 exception
对象和 config对象等.

out内置对象

out对象能把结果输出到网页上,主要是用来控制管理输出的缓冲区(buffer)和输出流(output stream), out对象用于各种数据的输出,其常用方法及描述如下表所示. out对象被封装为javax.Servlet.jsp.JspWriter接口,通过调用pageContext.getOut()方法可以获取out对象。

out 对象常用方法:

方法描述
public abstract void clear()清除缓冲区的内容,不将数据发送至客户端
public abstract void clearBuffer()将数据发送至客户端后,清除缓冲区中的内容
bublic abstarct void close()关闭输出流
bublic abstarct void flush()输出缓冲区的数据
public int getBufferSize()取缓冲区的大小。缓冲区大小可以用<%@ page buffer=“size” %>设置
public abstract int getRemianning()获取缓冲区剩余空间的大小
public boolean isAutoFlush()获取<%@ page is AutoFlush=“true/flase” %>设置的AutoFlush值
public abstract void newLine()输出一个换行字符,换一行
public abstract void print()显示各种数据类型的内容
public abstract void println()分行显示各种数据类型的内容

尝试使用out对象实现输出不同的类型的数据
新建一个Dvnamic Web Proiect 工程 (hello_4),在工程下新建jsp文件(out.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 设置缓冲区大小为8kb -->
<%@ page buffer = "8kb" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>out内置对象的使用</title>
</head>
<body>
<%
out.println("打印出字符数组");
out.println(new char[]{'c','h','a','r'});
out.println("<br>");
out.println("打印双精度数");
out.println(12.6);
out.println("<br>");
out.println("打印单精度数");
out.println(12.6f);
out.println("<br>");
out.println("打印BufferSize的大小");
out.println(out.getBufferSize());


%>
</body>
</html>

运行结果
运行结果
由此可见,我们成果打印出了3种不同类型的数据,并且成果输出了我们设置的缓冲区的大小。

request

本次学习的是request内置对象的使用方法,包含解决中文乱码的办法
request.jsp的编码是UTF-8,Java默认的编码是Unicode,需要在处理接收参数前进行编码设置,以解决中文乱码问题
在工程中新建一个jsp文件(request.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request对象的使用</title>
</head>
<body>
<form action="handle1.jsp" method="post">
<input type="text" name="username">
<input type="submit" value="提交">
</form>
</body>
</html>

新建一个新的jsp文件(handle1.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 内置对象的使用</title>
</head>
<body>
<%
Stringusername = request.getParameter("username");
%>
欢迎:<%=username %>的到来
</body>
</html>

运行request.jsp文件
运行结果
1
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
从上面结果可以看到,我们提交非中文时是一切正常的,但是,当我们提交中文时,便会出现乱码
所以,为了解决乱码,我们需要重新进行编码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 内置对象的使用</title>
</head>
<body>
<%
//第一步设置request的字符为utf-8
request.setCharacterEncoding("utf-8");
//第二部设置响应的内容类型为text/html;charset=UTF-8
response.setContentType("text/html; charset=UTF-8");
//第三步,将request.getParameter("username")的值通过String的构造器重新构造
String str = request.getParameter("username");
String username = new String(str);
//String username = new String(request.getParameter("username"));
%>
欢迎:<%=username %>的到来
</body>
</html>

重新运行
运行结果:
ened
可以看到,乱码问题解决了,而其中第三步重新构造的步骤是可以直接简化成一句来简化代码

String username = new String(request.getParameter("username"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值