JSP的九大内置对象:
- page
- out
- request
- response
- session
- application
- page context
- config
- exception
一:out(输出)
out.jsp
<body>
//reg.jsp里面的链接
<%String id=request.getParameter("id");
String name=request.getParameter("name");
out.print("id="+id+"<br>");
out.print("name="+name+"<br>");
%>
<hr>
<%
int[] n={60,70,80};
for(int i=0;i<n.length;i++){
out.print(n[i]);
}
%>
<hr>
<%
int[] n1={60,70,80};
for(int i=0;i<n1.length;i++){
out.println(n1[i]);
}
%>
<hr>
<%
int[] n2={60,70,80};
for(int i=0;i<n2.length;i++){
out.print(n2[i]+"<br>");
}
%>
</body>
id=null
name=null
607080
60 70 80
60
70
80
二:request(请求)
request对象主要用于处理客户端请求
reg.jsp
<body>
<form action="doreg.jsp" method="post">
<a href="out.jsp?id=1&name=yl">我是链接</a><br>
姓名:<input type="text" name="username" /><br>
密码:<input type="password" name="password" /><br>
爱好:<input type="checkbox" name="aihao" value="篮球" />篮球
<input type="checkbox" name="aihao" value="攀岩" />攀岩
<input type="checkbox" name="aihao" value="游泳" />游泳<br>
<input type="submit" value="提交" />
</form>
</body>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
//设置请求的编码格式,该方式只对post提交有效,防止中文乱码
request.setCharacterEncoding("utf-8");
//获取表单数据
String username = request.getParameter("username");//请求获取参数
String password = request.getParameter("password");
String[] info = request.getParameterValues("aihao");//请求获取多个值对应的数据
out.print("姓名:"+username+"<br>");
out.print("密码:"+password+"<br>");
String str="";
for(int i = 0;i<info.length;i++){
str += info[i]+" ";
}
out.print("爱好:"+str);
%>
乱码的解决方法:
在方式3中,端口号也是在那修改(myeclipse内置Tomcat与Apache Tomcat 端口冲突时修改)
二:request与response中转发与重定向
response对象用于响应客户请求并向客户端输出信息
response 对象常用方法
void sendRedirect (String location):将请求重新定位到一个不同的URL,即页面重定向
Login.jsp
<body>
<form action="doLogin.jsp" method="post">
姓名:<input type="text" name="name" /><br>
密码:<input type="password" name="password" /><br>
<input type="submit" value="提交">
</form>
</body>
doLogin.jsp
<% request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String password = request.getParameter("password"); //这是转发的方式 /* * if(name.equals("yl")&&password.equals("123456")){ //equals等于 request.getRequestDispatcher("success.jsp").forward(request, response);
}else{ request.getRequestDispatcher("Login.jsp").forward(request, response); } */ //这是重定向的方式 /* * if(name.equals("yl")&&password.equals("123456")){ response.sendRedirect("success.jsp");//getRequestDispatcher 获取请求调度程序 forward 转发 response 响应
}else{ response.sendRedirect("Login.jsp"); } */ //如果重定向要传值,则 /** if(name.equals("yl")&&password.equals("123456")){ response.sendRedirect("success.jsp?name="+name); }else{ response.sendRedirect("Login.jsp"); } */ //如果想要弹窗,则 /** *if(name.equals("yl")&&password.equals("123456")){ //弹窗不会出现,因为来不及弹窗,加上链接即可 // out.print("<script>alert('登陆成功');Location.href="success.jsp"</script>"); response.sendRedirect("success.jsp?name="+name); }else{ response.sendRedirect("Login.jsp"); } */ %> </body>// sendRedirect 发送重定向
转发与重定向的区别:
转发:
- 浏览器地址栏不显示跳转后的路径,更加安全
- 转发是服务器内部的跳转页面,它不能访问外部的资源
- 转发多个页面认为是一次请求,可以获得一次请求的所有参数的值
重定向:
- 重定向地址栏可以显示跳转的路径
- 重定向后可以访问项目外的资源
- 重定向相当于重新发送了一次新的请求,前面请求的数据全部丢失
一个会话就是浏览器与服务器之间的一次通话
session的常用方法:
问题:一个session对应一个窗口,那么通过超链接打开的窗口是否也是新的session呢?
分析:
- 每个session对象都与浏览器一一对应,重新开启一个浏览器,相当于创建一个session对象
- 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
doLogin.jsp
<body> <% request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String password = request.getParameter("password"); //这是转发的方式 if(name.equals("yl")&&password.equals("123456")){ //在session中存放用户信息 session.setAttribute("user", name); //设置session过期时间(这里的时间单位是秒)
session.setMaxInactiveInterval(20); request.getRequestDispatcher("success.jsp").forward(request, response); }else{ request.getRequestDispatcher("Login.jsp").forward(request, response); } %> </body> 在web.xml中也可以设置session//setMaxInactiveInterva 设置最大非活动间隔
</welcome-file-list> <!-- 这里的时间单位是min --> <session-config> <session-timeout>10</session-timeout> </session-config>
success.jsp
<body> <% String name=(String)session.getAttribute("user"); if(name==null){ response.sendRedirect("Login.jsp"); } %> 欢迎<%=name %>登陆成功! <br> <a href="exit.jsp">安全退出</a> </body>
exit.jsp<body> <% session.removeAttribute("user"); // removeAttribute 删除指定名称所对应的对象 response.sendRedirect("Login.jsp"); %> </body>
在系统中增加登录验证,如果session中不存在该用户的登录信息,转入登录页面checkLogin.jsp
<% if(session.getAttribute("user")==null){ response.sendRedirect("Login.jsp"); } %>
如果session中不存在该用户的登录信息,转入登录页面
如果session中不存在该用户的登录信息,转入登录页面