JSP内置对象(上)
来源:互联网 发布:java 存在 编辑:程序博客网 时间:2024/06/06 08:33
1.JSP内置对象简介
2.Web程序的请求与响应模式
Web程序的请求响应模式
用户发送请求(request)
服务器给用户响应(response)
3.OUT对象
什么是缓冲区:Buffer,所谓缓冲区就是内存的一块区域用来保存临时数据。
这里做一个实例 用out对象来打印一首诗
<%@ page language="java" contentType="text/html; charset=utf-8" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><% out.println("<h1>关雎</h1>"); out.println("关关雎鸠,在河之洲。窈窕淑女,君子好逑。<br>"); out.println("参差荇菜,左右流之。窈窕淑女,寤寐求之。<br>"); out.println("求之不得,寤寐思服。悠哉悠哉,辗转反侧。<br>"); out.println("参差荇菜,左右采之。窈窕淑女,琴瑟友之。<br>"); out.println("参差荇菜,左右芼之。窈窕淑女,钟鼓乐之。<br>");%><br>缓冲区大小:<%=out.getBufferSize() %>Bytes<br>缓冲区剩余空间大小:<%=out.getRemaining() %>Bytes<br>是否自动清空缓冲区:<%=out.isAutoFlush() %></body></html>
4.get和post提交方式的区别
表单提交的两种方式
表单三个属性 method就是提交方式,提交方式有两种分别是get和post
下面通过实例来具体比较一下
<%@ page language="java" contentType="text/html; charset=utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><h1>用户登录</h1><hr><form action="dologin.jsp" method="post"><label for="uername">用户名:</label><input type="text" name="用户名" id="username" /><br> <label for="pass">密码 :</label><input type="password" name="密码" id="pass" /><br><input type="submit" value="登陆"></form></body></html>
method=”post”分别修改就可以比较出两者的区别。
5. request对象上
request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。常用方法如下:
reg.jsp<body><h1>用户注册</h1><hr><form name="regForm" action="request.jsp" method="post"><table><tr><td>用户名:</td><td><input type="text" name="username" /></td></tr><tr><td>爱好:</td><td><input type="checkbox" name="favorite" value="read" />读书<input type="checkbox" name="favorite" value="music" />音乐<input type="checkbox" name="favorite" value="movie" />电影<input type="checkbox" name="favorite" value="internet" />上网</td></tr><tr><td colspan="2"> <input type="submit" value="提交" /> </td></tr></table><br><hr><a href="request.jsp?username=薛江波">测试URL传参数</a></form></body>
request.jsp
<body><h1>request内置对象</h1><% request.setCharacterEncoding("utf-8"); //解决中文乱码问题,无法解决url传参的中文乱码问题//那么url传参该如何解决呢,需要在tomcat配置文件中,conf文件包下有一个server.xml,找到其中//connector 在结尾加上 URIEncoding="utf-8",加上这个属性就可以解决。需要注意的是一定要重启//tomcat服务器,不然不会生效。%>用户名:<%=request.getParameter("username") %> <br>爱好:<%if(request.getParameterValues("favorite")!=null){ //点击测试url传参因为没有选择爱好,造成空异常,所以这里先判断一下 String[] aihao=request.getParameterValues("favorite"); for(int i=0;i<aihao.length;i++){ out.println(aihao[i]+" "); }}%></body>
6.request对象下
接下来说setAttribute和get属性方法,set是可以在request请求对象中保存一下属性,在设置属性的时候它是一个键值对的形式,取属性的时候我们只需要输入它的键值,我们就可以获取它的属性值。
<%request.setAttribute("password","123456");><%=request.getAttribute("password");%>
还有getContentType()方法,获取请求体的MIME类型
得到请求体的MIME类型:<%=request.getContentType() %> <br>返回请求用的协议类型及版本号:<%=request.getProtocol() %><br>返回接受请求的服务器主机名:<%=request.getServerName() %><br>返回服务器接受此请求所用的端口号:<%=request.getServerPort() %><br>返回字符编码方式:<%=request.getCharacterEncoding() %><br>返回请求体的长度(以字节数):<%=request.getContentLength() %><br>返回发送此请求的客户端IP地址:<%=request.getRemoteAddr() %><br>返回一虚拟路径的真实路径:<%=request.getRealPath("request.jsp") %><br>返回上下文路径:<%=request.getContextPath() %>
7.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。response的对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。常用方法如下:
PrintWriter对象输出在内置对象out之前,所以总是先打印response获取的这个输出流对象,除非out用flush方法。
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><% response.setContentType("text/html;charset=utf-8");//设置响应的MIME类型 out.println("<h1>response内置对象</h1>"); out.println("<hr>"); //out.flush(); PrintWriter outer=response.getWriter(); //获得response对象生成的输出流对象 outer.println("大家好,我是response对象生成的输出流outer对象"); response.sendRedirect("reg.jsp");//请求重定向%>
8.请求重定向与请求转发的区别
请求重定向:客户端行为,respnse.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。
请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。
response.sendRedirect("request.jsp");request.getRequestDispatcher("request.jsp").forward(request,response);
举个例子,去A局办事,A说不归他们管遂出门去B,此时请求也会转向B这个地址,URL地址改变,之前的请求对象也没有保存,而是一个新的请求。
request则相当于,去A局办事,A知道该B做但是他自己联系了B办好后将结果送了过来,此时URL地址不变,之前请求的对象信息也都保存了。
如上面的例子,直接重新定向的这个地址,请求信息就会消失,只是进入了这个页面。而在request的方法中请求提交的信息就会得到保存。
- JSP内置对象(上)
- JSP内置对象(上)
- JSP内置对象(上)
- JSP内置对象上
- 四、JSP内置对象(上)
- JSP内置对象详细介绍(上)
- JSP内置对象详细介绍(上)
- JSP内置对象(转载)
- jsp内置对象(转)
- jsp内置对象(转载)
- JSP内置对象(一)
- JSP内置对象(2)
- JSP内置对象(下)
- JSP内置对象(下)
- JSP内置对象(1)
- JSP内置对象(下)
- JSP学习笔记二之JSP的语法和9大内置对象(上)
- JSP基础(三)JSP内置对象
- LeetCode-661. Image Smoother
- 关于无人机升力的产生
- 统计学习方法概论
- 爱奇艺2018秋季校招测试工程师(第一场、第二场、第三场)编程题汇总
- java的5种方法--九九乘法表
- JSP内置对象(上)
- 设计模式之单例模式
- Java的快速排序----在进程线程模拟实验中遇到的排序问题
- 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
- python3 vs. python2
- java通过JDBC链接SQLServer2017
- 使用DetachedCriteria 模糊查询中值为null时的情况
- mysql数据库数据类型之日期时间型
- java动态代理机制