JavaWeb学习笔记#1-JSP内置对象
JSP内置对象
内置对象指web容器创建的对象,不需要new来创建
常用内置对象out对象:
out对象是JspWriter类的实例,可以向客户端输出内容。
<%
out.println("分别输出缓存区大小,剩余大小,是否自动清除。");//依赖servlet库,调用out对象的方法前需要引入tomcat的库文件。
out.println(out.getBufferSize() + ";" + out.getRemaining() + ";" + out.isAutoFlush());
// print过程中可以用flush方法提前将缓冲内容输出。
%>
request对象
客户端的请求会被封装到request对象之中,在请求完成之前,request对象一直有效。
<form action="request.jsp" name="request" method="post">
\\传递至reques.jsp
form方式或url方式:
<a href="request.jsp?username=testusernme ">通过url地址参数传递信息</a>
<%--url传中文可能会出现乱码问题--%>
在request.jsp页面中:
<%
request.setCharacterEncoding("utf-8");
// 可以通过该方法设定request传递过程中使用的字符集,无法解决url传参时的乱码问题
%>
username <%=request.getParameter("username")%><br>
url乱码问题需要修改tomcat中server.xml中:
server.xml
response对象
该对象具有页面作用域。
<%
out.println("normal out ");
PrintWriter printWriter = response.getWriter();
printWriter.println("from writer"); //appears more faster than out
response.sendRedirect("index.jsp"); //send request to new page
%>
请求重定向:客户端行为。response.sendRedirect("url")请求重定向相当于两次请求,只是上一次的请求对象不会保存,地址栏url会改变。
请求转发:服务器行为。上一次的请求对象会保存,地址栏url不会改变
request.getRequestDispatcher("request.jsp").forward(request,response);
session对象
session表示服务器与客户端的一次会话,简单来说就是进入网站到离开网站的时间。保存在服务器内存之中。session对象用于在网页切换过程中保存用户的状态。
<%
session.setAttribute("username","edwin");
session.setMaxInactiveInterval(100); // set 100 second as the session's live time
%>
session create time :<%=session.getCreationTime()%><br>
<%=simpleDateFormat.format(date)%><br>
session id: <%=session.getId()%><br>
session attribute: <%=session.getAttribute("username")%><br>
session live time: <%=session.getMaxInactiveInterval()%>
session存活时间:
session对象默认存活时间约30分钟(Tomcat)。
session的存活时间可以设定。
session对象可以通过调用invalidate()销毁。
session对象在服务器重启后全部销毁。
完全退出页面后session依然存在,只是非活跃状态。
//web.xml中配置session存活时间。(eg:10分钟)
web.xml:
<session-config>
<session-timeout>10</session-timeout>
</session-config>
application对象
application对象实现了用户之间数据的共享,可以存放全局变量。
application对象开始于服务器启动,终止于服务器关闭。
通过set 与 get方法对属性进行操作,getAttributeNames可以获得所有属性名。
<%
application.setAttribute("city","shanghai");
application.setAttribute("postcode","10000");
application.setAttribute("email","111@163.com");
%>
city = <%=application.getAttribute("city")%>
<br>
application has attributes :
<%
Enumeration enumeration = application.getAttributeNames();
while (enumeration.hasMoreElements()){
out.println(enumeration.nextElement() + "-------" );
}
%>
page 对象
page 对象指向当前page页本身,类似于this指针。
pageContext 对象
pageContext对象提供了对jsp页面所有对象及命名空间的访问,如session,甚至application的某个属性。
<%session.setAttribute("username","edwin"); %>
<label>get session's attribute by pageContext </label>
<%=pageContext.getSession().getAttribute("username")%>
//edwin
<%
pageContext.forward("index.jsp"); //跳转到index页面
pageContext.include("reg.jsp"); //页面中嵌入reg页面
%>
config 对象
config 对象在servlet初始化时,JSP引擎为servlet传递信息时会使用到,如servlet参数等。
exception 对象
异常对象,当页面产生异常时,就产生了该对象。JSP页面要使用该页面,需要将isErrorPage设为:true。
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="exception.jsp" %>
//exception 交给exception.jsp处理。
//exception.jsp中,将isErrorPage置为true;
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
附:
get 与 post区别
表单提交一般格式如下:
<form action="actionName" method="get/post" accept-charset="utf-8">
</form>
get:
以明文方式通过url提交数据,可以通过url看到数据,且数据大小不超过2KB,但是效率高于post。用于安全性不高且数据量不大的操作,如搜索、查询。
post:
将信息封装于HTML HEADER中,用于高安全性且数据量大的情况,如注册,上传。
get方式,密码出现在地址栏中