jsp学习笔记之:内置对象
application对象:
设置一个名为name,值为val的应用内共享的数据
<%
application.setAttribute("name",val);
%>
获取名为name的应用内共享数据的值
<%
application.setAttribute("name");
%>
exception对象:
一般用于异常处理页面。在当前页面出现错误时,会将错误类型和错误信息传到异常处理页面,此时异常处理页面可以用以下指令获取错误信息和类型:
<%=exception.getClass()%>
<%=exception.getMessage()%>
out对象:
<%
out.println("<tr>");
out.println("text");
out.println("</tr>");
%>
效果同
<tr>text</tr>
pageContext对象:
设置不同范围的变量:
//设置名为page的变量,值为hello,默认范围为page,无需另外加入参数
pageContent.setAttributesScope("page","hello"); //设置名为request2的变量,值为hello,范围为request
pageContent.setAttributesScope("request2","hello",PageContext.REQUEST_SCOPE); //设置名为session2的变量,值为hello,范围为session
pageContent.setAttributesScope();("session2","hello",PageContext.SESSION_SCOPE); //设置名为app2的变量,值为hello,范围为application
pageContent.setAttributesScope("app2","hello",PageContext.APPLICATION_SCOPE);
获取不同范围的变量:
//获取名为page的变量,默认范围设为page
pageContent.setAttributesScope("page"); //获取名为request2的变量,范围定位为request
pageContent.setAttributesScope("request2",PageContext.REQUEST_SCOPE);
注:范围为session、application的不再一一列出
获取变量的范围:
//获取名为page的变量的范围
pageContext.getAttributesScope("page");
返回值对应:
1:page 2:request 3:session 4:application
request对象:<url>
post请求和get请求的区别参考文章: http://kimmking.github.io/2017/12/01/comparing-get-and-post/
post请求案例:
form.jsp(发送方)
<form id="f1" method="post" action="request.jsp">
请输入一个数字:<input type="text" value="" name="number" id="number"/>
</form>
request.jsp(接收方)
<%
//获取所有请求头的名称
Enumeration<String> headerNames=request.getHeaderNames();
while(headerNames.hasMoreElements()){
//逐个取出请求名称
String headerName=headerNames.nextElement();
//获取并打印对应请求名称的值
out.println(headerName+request.getHeader(headerName)+"<br/>");
}
//设置解码方式,对于中文,使用GBK解码方式
request.setCharacterEncoding("GBK");
//获取并打印从form.jsp传来的名为number的参数值
String num=request.getParameter("number");
//获取多个值的请求参数:
//String[] mVal=request.getParameter("mValues");
out.println("number: "+num+"<br>");
%>
注:get请求与post请求的发送和接收类似
reponse对象:
响应生成非字符响应实例:
生成一张图片并生成非字符响应(案例摘自《轻量级JAVA EE企业应用实战》)
<%--
Created by IntelliJ IDEA.
User: macrazds
Date: 18-3-11
Time: 下午3:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="image/png" language="java" %>
<%@ page import="java.awt.image.*,javax.imageio.*,java.io.*,java.awt.*" %>
<%
//创建BufferedImage对象
BufferedImage image=new BufferedImage(340,160,BufferedImage.TYPE_INT_RGB);
//以image对象来获取Graphics对象
Graphics g=image.getGraphics();
//画图(所画图形会存储在image对象中):
g.fillRect(0,0,400,400);
//设置颜色 下同
g.setColor(new Color(255,0,0));
//画弧 下同
g.fillArc(20,20,100,100,30,120);
g.setColor(new Color(0,255,0));
g.fillArc(20,20,100,100,150,120);
g.setColor(new Color(0,0,255));
g.fillArc(20,20,100,100,270,120);
g.setColor(new Color(0,0,0));
//设置文本字体
g.setFont(new Font("Arial Black",Font.PLAIN,16));
//画出字符串
g.drawString("red:climb",200,60);
g.drawString("green:swim",200,100);
g.drawString("blue:jump",200,140);
g.dispose(); //画完后将g对象dispose
//将图像输出到页面的响应
ImageIO.write(image,"png",response.getOutputStream());
%>
接着在其他页面直接调用img标签即可显示此图片:
<img src="img.jsp">
注:本例在chrome中无法将img.jsp显示,具体原因还不清楚,但可在firefox或IE等正常显示
重定向:
进入当前页面后,重定向(自动跳转)到另一页面,且不保留传给原页面request范围的属性及所有请求参数
//重定向到index.jsp
<% response.sendRedirect("index.jsp"); %>
增加Cookie:
Cookie:常用于网站记录客户信息,如用户名等。
写一个username的Cookie:
<%
//首先获取名为name的请求参数
String name=request.getParameter("name");
//以获取到的name为值,创建一个名为username的Cookie对象
Cookie c=new Cookie("username",name);
//设置Cookie生存期,为3600秒
c.setMaxAge(3600);
//在客户端处添加新Cookie对象c
response.addCookie(c);
%>
从客户端中获取指定Cookie:
<%
//获取本机所有保留的Cookie
Cookie[] cookies=new request.getCookies();
//遍历获取到的Cookies
for(Cookie c:cookies){
//符合条件(这里的条件是Cookie对象的名称相符)的Cookie作相应处理(这里仅仅是打印出来)
if(c.getName().equals("username"))
out.println(c.getValue());
}
%>
值得一提的情况是,若Cookie的内容是中文的话,可以用到以下指令:
java.net.URLEncoder.encode("中文内容","gbk"); //这里的返回值是String类型,可以直接作为Cookie构造方法的(值)参数
java.net.URLDecoder.decode(cookie.getValues()); //如果内容是中文,并已通过上面一条指令正确创建了中文内容的Cookie对象,这个可以直接放到out.println(String str);里面直接显示
session对象:
这个对象表示浏览器和服务器之间的一次会话,即浏览器连接到服务器开始,直到与服务器断开,为一次会话。常用于用户登陆系统等。此外,其范围内的属性可以在(来自同一个服务器的)多个页面间共享。
常用方法:
//设置一个session属性
session.setAttribute(String attName,Object attValue);
//获取一个session属性值
session.getAttribute(String attName);
jsp学习笔记之:内置对象的更多相关文章
- 在IDEA中使用JSP中的out内置对象,out.println()——println红色解决方法
今天在学习JSP的时候,在jsp中使用out内置对象,开发工具用的是IDEA,结果如下图所示 郁闷了半天找度娘,可能关键字输的不准确,乱七八糟的方法一大堆,什么加依赖啊啥的,反正都不管用,最后找到一篇 ...
- JavaWeb笔记——Jsp的指令、内置对象和动作标签
JSP三大指令 一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info=" ...
- 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象
本节说一下JSP中的9个内置对象.这9个内置对象都是Servlet API接口的实例,只是JSP规范对他们进行了默认初始化(由JSP页面对应Servlet的_jspService()方法来创建这些实例 ...
- jsp笔记3(内置对象)
jsp脚本中的9个内置对象: 1.application:javax.servlet.ServletContext的实例对象,该实例对象代表jsp所属的web应用本身,可用于在jsp页面或Servle ...
- Java Web学习总结(16)——JSP的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- jsp中9个内置对象与servlet对应关系及四个作用域
参考: <jsp&servlet学习笔记.第2版.林信良><JSR-245 JavaServer Pages 2.2 Maintenance Release Specifi ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- Jsp的九个内置对象
一.什么是内置对象?在jsp开发中,会频繁使用到一些对象.例如HttSession,ServletContext,HttpServletRequest.如果我们每次要使用这些对象都去创建这些对象,就会 ...
- 在jsp中常用的内置对象(5个)小总结和两种页面跳转方式(服务器端调转、客户端跳转)的区别
jsp中常用的几个内置对象: 一.request对象 主要作用: (1)获取请求页面的信息 比如:request.getParameter("参数名"); (2)获取客户端 ...
- jsp页面元素和内置对象
java server pages其根本是一个简化的servlet设计.实现了在java当中使用html标签.javaEE标准 一.页面元素 1.静态内容 html.js.css相关标签元素. 2.指 ...
随机推荐
- 撸一撸Spring Cloud Ribbon的原理
说起负载均衡一般都会想到服务端的负载均衡,常用产品包括LBS硬件或云服务.Nginx等,都是耳熟能详的产品. 而Spring Cloud提供了让服务调用端具备负载均衡能力的Ribbon,通过和Eure ...
- 微信小程序模板发送,openid获取,以及api.weixin.qq.com不在合法域名内解决方法
主要内容在标题三,老手可直接跳到标题三. 本文主要解决个人开发者模板消息发送的问题(没有服务器,不能操作服务器的情况) 针对api.weinxin.qq.com不在以下合法域名列表内的问题提出的解决方 ...
- centos 6 安装zabbix 3.0
1.安装PHP Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3,完全不满足要求,故需要利用第三方源,将PHP升级到5.4以上,注意,不支持PHP7 rpm -ivh ...
- PHPUnit-附录 B. 标注
[http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.annotations.html] 所谓标注,是指某些编程语言中允许加在源代码中的一种特殊格式的语 ...
- vue框架-学习记录
前段时间在做vue项目时,遇到挺多问题,想简单总结一下: 1.关于父组件,子组件的通信 网上有很多这方面的讲解,讲解也比较细致,我主要总结了自己在项目中需要的: [1]父组件-子组件 也就是" ...
- 【动画】JQuery实现冒泡排序算法动画演示
1 前言 冒泡排序是大家最熟悉的算法,也是最简单的排序算法,因其排序过程很象气泡逐渐向上漂浮而得名.为了更好的理解其基本的思想,毛三胖利用JQuery实现了冒泡排序的动画演示,并计划陆续实现其它排序算 ...
- Linux 每日命令行
uptime 用于查看系统的负载信息. 它依次显示 当前系统时间.系统已运行时间.启用终端数量及平均负载值等信息.平均负载指的是系统在最近1分钟.5分钟.15分钟内的压力情况:负载值越低越好,尽量不要 ...
- 阿里云服务器 无法连接svn
网上所说的在服务器中:1. 配置防火墙 2.svnserve.conf没配置好,3.svn客户端缓存,都进行排查处理,还是连接不上. 最后使用ip add 查看服务器网卡ip命令 发现无法看到当前服务 ...
- C#仪器数据文件解析-PDF文件
不少仪器工作站输出的数据报告文件为PDF格式,PDF格式用于排版打印,但不易于数据解析,因此解析PDF数据需要首先读取到PDF文件中的文本内容,然后根据内容规则解析有意义的数据信息. C#解析PDF文 ...
- 机器学习之Adaboost (自适应增强)算法
注:本篇博文是根据其他优秀博文编写的,我只是对其改变了知识的排序,另外代码是<机器学习实战>中的.转载请标明出处及参考资料. 1 Adaboost 算法实现过程 1.1 什么是 Adabo ...