JSP内置对象

来源:互联网 发布:ubuntu on windows 编辑:程序博客网 时间:2024/06/05 10:21
JSP其根本是一个简化的Serverlet设计,他实现了在Java当中使用HTML标签,JSP是一种动态网页技术标准
也是JAVAEE的标准,JSP和Serverlet一样,是在服务器端执行的。
JSP:java平台,安全性高,适合开发大型的,企业级的web应用程序
ASP.net:.NET平台简单易学,但安全性及跨平台性web应用
PHP:简单高效,成本低开发周期短,特别适合中小型企业的web应用开发。
JSP页面组成部分:静态内容,指令,表达式,小脚本,声明,注释
taglib指令,include指令,page指令
用户发出请求index.jsp,判断是否是第一次请求,是JSP引擎把该JSP文件转换成为一个Servlet,生成字节码文件,并执行jspinit()
然后生成字节码文件,不是就直接生成字节码文件,解析执行jspService(.)
jspService()方法被调用来处理客户端的请求,对每一个请求,JSP引擎创建一个新的线程来处理该请求。
如果有多个客户端同时请求JSP文件,则JSP引擎会创建多个线程,每个客户端请求对应一个线程。
以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但也要注意多线程的编程带来的同步问题,由于Servlet始终住与内存,所以响应是非常快的
内置对象:JSP内置对象是WEB容器创建的一组对象,不使用new关键字就可以使用的内置对象
常用的JSP内置对象:out,request,response,session,application,其他不常用的内置对象
用户发送请求,服务器进行响应
缓冲区就是内存中的一块区域用来保存临时数据
out对象是JSPWriter类的实例,是向客户端输出内容常用的对象
void println()想客户端打印字符串
void clear()清除缓冲区的内存,如果在flush之后调用会抛出异常
void clearBuffer()清除缓冲区的内荣,如果在flush之后调用不会抛出异常
void flush()将缓冲区的内容输出到客户端
int getBufferSize()返回缓冲区以字节数的大小,如不设置缓冲区则为0
int getRemaining()返回缓冲区还剩余多少可用
boolean isAutoFlush()返回缓冲区慢时,是自动清空还是抛出异常
void close()关闭输出流
<form name="regForm" action="动作" method="提交方式">

get:以明文的方式通过URL提交数据,数据在URL中可以看到,提交的数据最多不超过2KB,安全性较低但效率比post方式高,适合提交数据量不大,安全性不高的数据

<body><h1>用户登录</h1> <form name="regForm" action="dologin.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> </table> </form></body>dologin.jsp<body><h1>登录成功</h1><%request.setCharacterEncoding("utf-8");request.setAttribute("password","123456");%>用户名:<%=request.getParameter("username") %><br/>爱好:<%if(request.getParameterValues("favorite")!=null){String[] favorites=request.getParameterValues("favorite");for(int i=0;i<favorites.length;i++){out.println(favorites[i]+" ");}}%><br/>密码:<%=request.getAttribute("password") %><br/>请求的MIME类型:<%=request.getContentType() %><br/>协议类型即版本号:<%=request.getProtocol() %><br/>服务器主机名:<%=request.getServerName() %><br/>服务器端口号:<%=request.getServerPort() %><br/>请求的文件的长度:<%=request.getContentLength() %><br/>请求客户端的IP地址:<%=request.getRemoteAddr() %><br/>请求的真实路径:<%=request.getRealPath("out.jsp") %><br/>请求的上下文路径:<%=request.getContextPath() %><br/></body>
response对象:包含了响应客户请求的有关信息,但在JSP中很少直接用到它。他是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其他页面的response对象对当前页面无效,常用方法如下
String getCharacterEncoding()返回响应用的是何种字符编码
void setContextType(String type)设置响应的MIME类型
PrintWriter getWriter()返回可以向客户端输出字符的一个对象
sendRedirect重定向客户端的请求

<%@ 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(); outer.println("大家好"); response.sendRedirect("dologin.jsp");//请求重定向 %>

请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变
请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。

原创粉丝点击