jsp内置对象:
jsp内置对象有:
- JSP内置对象request
request对象主要用于处理客户端请求
其中request对象内常用的方法:
其中:getParameterValues(“name”)是通过name获取到的数组,比如复选按钮,获取到的是一个数组,需要通过for循环输出。
获取text、password、redio(单选框)、select(下拉列表)、checkbox(复选框)
示例:
<form action="homework11.jsp" method="post">
用户名:<input type="text" name="username"/><span>只能输入字母或数字,4-16个字符</span><br>
密码:<input type="password" name="password1"/><span>密码长度为6-12位</span><br>
确定密码:<input type="password" name="password2"/><br>
性别:<input type="radio" name="sex" value="男" checked="checked"/>男
<input type="radio" name="sex" value="女"/>女<br>
电子邮件地址:<input type="text" name="email"/><span>输入正确的Email地址</span><br>
出生日期:<input type="text" name="year"/>
<select name="month">
<option value="一月" selected="selected">一月</option>
<option value="二月">二月</option>
</select><br>
<input type="checkbox" name="channel" value="报刊">报刊
<input type="checkbox" name="channel" value="网络">网络
<input type="checkbox" name="channel" value="朋友推荐"> 朋友推荐
<input type="checkbox" name="channel" value="电视"> 电视
<input type="submit" value="同意协议并提交"/>
</form>
<%
request.setCharacterEncoding("utf-8");//将下面的的内容输出到页面上为utf-8格式的
//不会乱码在页面设置支持中文字符的字符集,如:UTF-8获取数据时解决中文乱码问题
String username = request.getParameter("username");
String password1 = request.getParameter("password1");
String password2 = request.getParameter("password2");
String sex = request.getParameter("sex");
String email = request.getParameter("email");
String year = request.getParameter("year");
String month = request.getParameter("month");
String channel[] = request.getParameter("channel");
if (channels != null) {
for (String channel : channels) {
out.println(channel);//进行输出
}
}
%>
<%=username %>
<%=password1 %>
<%=password2 %>
<%=sex %>
<%=email %>
<%=year %>
<%=month %>
- JSP内置对象response:
response对象用于响应客户请求并向客户端输出信息
跳转页面也成为重定向,response.sendRedirect("login.jsp")
请求到的信息没有被转移。
重定向和转发:
最主要的一点,重定向不能将请求到的数据传送到下一个页面。转发可以将请求到的数据能够传输到下一个页面。
response.sendRedirect("login.jsp");//重定向
request.getRequestDispatcher("login.jsp").forward(request, response);//转发
之间的区别:
- 转发在服务器端完成的;重定向是在客户端完成的。
- 转发的速度快;重定向速度慢。
- 转发的是同一次请求;重定向是两次不同请求。
- 转发不会执行转发后的代码;重定向会执行重定向之后的代码 。
- 转发地址栏没有变化;重定向地址栏有变化 。
- 转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成。
Forward是在服务器端的跳转,就是客户端一个请求发给服务器,服务器直接将请求相关的参数的信息原封不动的传递到该服务器的其他jsp或servlet去处理,而sendredirect是在客户端的跳转,服务器会返回给客户端一个响应报头和新的URL地址,原来的参数什么的信息如果服务器端没有特别处理就不存在了,浏览器会访问新的URL所指向的servlet或jsp,这可能不是原先服务器上的webservice了。
session会话:
一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程(同一个session对象sessionid相同)。
session对象常用的方法:
注意:session与窗口的关系
- 每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
- 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
示例:
session.setAttribute("username", username);//将获取到的username设置给session中
session.setMaxInactiveInterval(10);//设置这个会话存在的时间,单位秒
response.sendRedirect("a.jsp");//重定向跳转到别的页面
<%=session.getAttribute("username") %>//将session当中username的值拿出来
<% session.invalidate(); %>//使得会话失效,注意需要在获取属性下面属性,否则找不到username对象,会报错
include指令:
使用include指令包含的页面将会直接插入包含该页面中该指令的位置,然后jsp编译器再对合成的文件进行编译,最终编译的页面只有一个。
形式
<%@ include file="include.jsp" %>
使用jsp:include动作包含时,当该动作标识执行后,jsp程序将会将请求forward到被包含页面,并将执行结果放入输出至浏览器中,并返回页面继续执行后面的代码。包含文件和被包含文件将会分别编译。
<jsp:include page="include.jsp"></jsp:include>