欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP9个内置对象

程序员文章站 2022-07-01 23:02:24
jsp的第一个对象为out对象 为向客户端输出信息 //out表示向客户端输出各种数据 //对输出缓冲区进行管理 可以通过page属性来改变缓冲区 out.println("操&...

jsp的第一个对象为out对象 为向客户端输出信息

//out表示向客户端输出各种数据 
//对输出缓冲区进行管理 可以通过page属性来改变缓冲区
out.println("操");
out.print("cao");
out.newline();
out.println("
");
out.print("cao");

刷新缓冲区 可以用
//强制刷新缓冲区的数据
out.flush();

清空缓存区 也就是前面输出会清空掉

 

 

//清空缓冲区中的数据
out.clearbuffer();
out.clear();
out.println("获取当前的缓冲区大小:" + out.getbuffersize());
out.println("当前缓冲区剩余字节数目:" + out.getremaining());


区别是clear和flush会冲突 而clearbuffer不会与flush进行冲突

 

request对象 用于封装客户端的请求

 

请求的方法名 <%= request.getmethod() %> 

请求的url <%= request.getrequesturi() %>
获取请求的协议<%=request.getprotocol() %>
获取服务器的ip<%=request.getservername() %>
请求的服务器端口<%=request.getserverport() %>
客户端的ip地址<%= request.getremoteaddr() %>
客户端的主机名<%= request.getremotehost() %>


 

首先创建一个提交的表单

<form action = "do_register.jsp" method = "post">
用户名 <input type = "text" name = "username"/></br>
技能 
<input type = "checkbox" name = "skills" value = "java">java
<input type = "checkbox" name = "skills" value = "oc">oc
<input type = "checkbox" name = "skills" value = "swift">swift
</br>
<input type = "submit" value = "提交"/>
<input type = "reset" value = "重置"/>
</form>

随后在do_register.jsp中回去参数后,看是否成功 随后配置property来进行设置
<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "https://www.w3.org/tr/html4/loose.dtd">
<html>
<%
//getparameter方法获得用户名和技能数组
string username = request.getparameter("username");
string skills = "";
string skillarr[] = request.getparametervalues("skills");
for(int i = 0; i < skillarr.length; i++){
skills += skillarr[i];
}
//setattribute方法
request.setattribute("username",username);
request.setattribute("skills",skills);
%>
<!-- forward跳转指令 跳转到新的界面 -->
<jsp:forward page="welcome.jsp"></jsp:forward>
这里是处理注册是否成功,成功后跳转到welcome.jsp文件

用getparameter来获取

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "https://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>信息展示</title>
</head>
<body>
用户名<%= request.getparameter("username")%>
技能<%=request.getparameter("skills")%>

</body>
</html>

这里要区分一下 getparameter来处理客户端的请求 而setattribute来表示webpages之间的传值

JSP9个内置对象

JSP9个内置对象

response方法,用于返回客户端的请求

 

<%
//设置头部的信息 设置网页数据不缓存
response.setheader("cache-control","no-cache");
//设置每两秒刷新一次
response.setintheader("refresh",2);
out.println("date is " + new java.util.date().tostring());
%>
JSP9个内置对象
设置页面的直接跳转

 

 

//实现页面的跳转
response.sendredirect("https://www.baidu.com");
session对象 用于设置会话 在向服务器请求时,有唯一的一个sessionid 服务器会进行判定 相同的才给予响应

 

 

<%@page import="java.util.date"%>
<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>

session 的唯一标示符 32位长字符<%=session.getid() %> session的创建时间<%= new java.util.date( session.getcreationtime()).tostring() %> session的最后访问时间<%=session.getlastaccessedtime() %> session的失效时间 <%=session.getmaxinactiveinterval()%>

 

实现一个登陆验证 首先在login创建一个表单

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "https://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>insert title here</title>
</head>
<body>
<form acton = "do_login.jsp" method = "post">
username:<input type = "text" name = "username"/>
password:<input type = "password" name = "password"/>
<input type = "submit" value = "submit">
<input type = "reset" value = "reset">
</form>
</body>
</html>

随后在验证表单do_login.jsp中进行登陆的验证

session中配置属性

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "https://www.w3.org/tr/html4/loose.dtd">
<html>

<%
string username = request.getparameter("username");
string password = request.getparameter("password");
//验证是否登录成功
if(username != null && password != null){
//会话中配置java对象
session.setattribute("username",username);
//随后刷新跳转到欢迎界面
response.setheader("refresh","2;url=welcome.jsp");
}
%>

随后在欢迎界面根据session获得的不同值来输出不同的值

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "https://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>欢迎界面</title>
</head>
<body>
<% if(session.getattribute("username") != null) { %>
欢迎 <%=session.getattribute("username") %>
<a href = "logout.jsp">注销</a>
</br>
<%else { %>
请先登录
<a href = "login.jsp">登录</a>
<%} %>
<%if(session.isnew()) {%>
<br/>
欢迎新用户
<%}else{ %>
欢迎老用户
<%} %>
</y>
</html>

随后在退出登陆的界面 来进行退出

 

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>

<%
//退出的代码
session.invalidate();
response.setheader("refresh","2;url=welcome.jsp");
%>

config属性主要在severlt中进行配置 可以在web-inf目录下的web.xml文件中进行配置

 

JSP9个内置对象

JSP9个内置对象

application属性 用于设置全局的变量

 

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>

服务器信息<%=application.getserverinfo() %>
应用名称<%=application.getservletcontextname()%>
主机名称<%=application.getvirtualservername() %>
可以做一个简单的计数器 如果页面是第一次访问的话 就输出值,随后保存到application中,如果是第二次开始访问的,那么就从application中取出值,随后进行++和存值得操作
<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>

<% object obj = application.getattribute("counter"); //判断是否为空 空为第一次 if(obj == null){ application.setattribute("counter",new integer(1)); out.println("该页面被访问了1次
"); }else{ int countervalue = integer.parseint(obj.tostring()); countervalue++; out.println("该页面被访问了" + countervalue + "次
"); application.setattribute("counter",countervalue); } %>page属性相当于java中的this指针,用于指向本页面,其是继承自object类的
<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>

page对象的字符串<%=page.tostring() %> 当前的object类<%=page.getclass() %> 当前的hashcode值<%=page.hashcode() %> 继承自object类异常类必须配置error_page属性

在throw_error.jsp中人为的指定一个错误,随后进行抛出,指定错误界面为handle_error.jsp

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
   <%@page errorpage="handle_error.jsp" %>

<% int a = 10; int b = a / 0; %>随后在handle_error.jsp中 指定iserrorpage = true 随后输出一些异常的信息即可
<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
    <%@page iserrorpage="true" %> 

异常描述信息 <% out.println(exception.getmessage()); %> exception对象的字符串描述 <%=exception.tostring() %> 异常堆栈信息 <%=exception.printstacktrace() %>page_context可以说是一个集大成者,他可以转换为out 但是默认已经带有一个out了,所以自己命名的话只能命名为其他名称
<%
jspwriter myout = pagecontext.getout();
myout.println("hello world");
也可以在session 中设置值,随后进行取值和输出
pagecontext.setattribute("dakim","cao",pagecontext.session_scope);
string value = session.getattribute("dakim").tostring();
out.println(value);