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之间的传值
response方法,用于返回客户端的请求
<% //设置头部的信息 设置网页数据不缓存 response.setheader("cache-control","no-cache"); //设置每两秒刷新一次 response.setintheader("refresh",2); out.println("date is " + new java.util.date().tostring()); %>
设置页面的直接跳转
//实现页面的跳转 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"%>
实现一个登陆验证 首先在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文件中进行配置
application属性 用于设置全局的变量
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
应用名称<%=application.getservletcontextname()%>
主机名称<%=application.getvirtualservername() %>
可以做一个简单的计数器 如果页面是第一次访问的话 就输出值,随后保存到application中,如果是第二次开始访问的,那么就从application中取出值,随后进行++和存值得操作
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
"); }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"%>
在throw_error.jsp中人为的指定一个错误,随后进行抛出,指定错误界面为handle_error.jsp
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@page errorpage="handle_error.jsp" %>
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@page iserrorpage="true" %>
<% 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);
推荐阅读