3-jsp 内置对象、转发与重定向
1.request:请求
常用api:
getParameter("name"):获取页面表单单个元素的值
getParameterValues("name"):获取一组同名表单元素,比如说复选框
setCharacterEncoding("UTF-8"):设置字符集,要在获取参数之前执行才能解决乱码问题
setAttribute("name","value"):在请求对象中封装一个名字叫name的值
getAttribute("name"):从请求对象中通过name来获取参数
2.response:响应对象
作用:一般是服务器端跳转到客户端
重定向方法:response.sendRedirect("url");
转发:DispatchRequest dr = request.getDispatchRequest("url");
dr.forward(request,response);
重定向和转发的区别:重定向会改变跳转后的url地址,相当于两次请求,所以请求中的参数是不能往下传递的
转发不会改变跳转后的url地址,实际上是一次请求,可以将请求中的参数往下一个页面传递
3.页面之前传参数
a。表单提交:
b。url传参: url+?+参数名=值&参数名=值.....
http://localhost:8080/my/my.jsp?name=admin
以上两种都是用request.getParameter获取
c.往request.setAttribute()保存,用getAttribute("name")来取,前提是用转发来跳转
4.session:会话
作用域:是一个浏览器或者说一个客户端与服务端之间的一次通信,可以包含多次请求和响应。每个客户端的会话都是独立的。
生命周期:浏览器发送第一个请求开始,时限已到或者浏览器关闭将消亡
作用:是可以将数据保存在服务端,互相独立,可以保存任何数据类型。重定向也可以用session传递数据
常用api:
setAttribute("name","value"):在session对象中封装一个名字叫name的值
getAttribute("name"):从session对象中通过name来获取参数
session.setMaxInactiveInterval(arg0):设置session的有效期
5.application:全局应用
作用域:整个应用范围,所有的客户端都可以共用这个作用域
生命周期:就是服务器的运行周期
常用api:
setAttribute("name","value"):在对象中封装一个名字叫name的值
getAttribute("name"):从对象中通过name来获取参数
案例:做一个统计网站登录人数的案例,登录后显示给用户看您是第几位登录我们网站的用户(显示在success页面)
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<%
String error = (String)request.getAttribute("msg");
if(error==null){
error="";
}
%>
<body>
<div align="center">
<h1>登录页面</h1>
<form action="login/control.jsp" method="post">
用户名:<input name="username"><br>
密码:<input type="password" name="password"><span style="color: red"><%=error %></span><br>
<input type="submit" value="登录">
</form>
</div>
</body>
</html>
control.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<%
request.setCharacterEncoding("utf-8");
//1.拿到页面表单数据
String username = request.getParameter("username");
String password = request.getParameter("password");
if("admin".equals(username)&&"123456".equals(password)){
//2.登录成功 跳转到成功页面
//跳转方式:1.重定向 2.转发
//统计登录次数
Integer count = (Integer)application.getAttribute("count");
if(count==null){
count = 1;
}else{
count++;
}
application.setAttribute("count", count); session.setAttribute("username", username);//将用户信息保存在session中
request.setAttribute("welcome", "热烈欢迎");//往请求中添加新的参数,特点是可以添加任何数据类型
response.sendRedirect("success.jsp");
//request.getRequestDispatcher("success.jsp").forward(request, response);
}else{
//3.登录失败 调回登录页面
//response.sendRedirect("login.jsp?error=true");
request.setAttribute("msg", "用户名密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
%>
<body> </body>
</html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<%
//1.从登录页面的请求中获取表单参数
String username = request.getParameter("username");
//2.从控制页面的请求中获取新增的参数
String welcome = (String)request.getAttribute("welcome");
//3.从session中获取用户信息
String username2 = (String)session.getAttribute("username");
if(username2==null){//没有登录
response.sendRedirect("login.jsp");
}
String url = application.getRealPath("");
Integer count = (Integer)application.getAttribute("count");
%>
<body>
<h1>登录成功!<%=welcome+username2 %>,您是第<%=count %>位登录本网站的会员</h1>
<%=url %>
</body>
</html>
3-jsp 内置对象、转发与重定向的更多相关文章
- jsp内置对象 转发与重定向的区别
jsp 内置对象 转发与重定向的比较 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重 ...
- JavaWeb——JSP内置对象request,response,重定向与转发 学习总结
什么是JSP内置对象 九大内置对象 requestJSP内置对象 request对象常用方法 request练习 responseJSP内置对象 response练习 response与request ...
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Java遇见HTML——JSP篇之JSP内置对象(上)
一.JSP内置对象简介 1.1.内置对象简介 JSP内置对象是WEB容器中创建的一组对象,可以直接使用不需要new,如截图中的out 对象. JSP有九大内置对象: 五大常用对象: out.reque ...
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
- JSP内置对象详解
jsp中内置对象:request.response.session.applecation.out.pagecontesx.config.page.exception.cookie 1.request ...
- JSP内置对象(上)
在JSP中为了简化页面的开发提供了一些内置的对象.这些对象不需要由JSP的编写者通过new关键字实例化,他们都由容器实现和管理,在所有的JSP页面中都可以使用内置对象. JSP中共有9大内置对象: o ...
- jsp内置对象的方法
JSP内置对象的方法:out:out.print();request:request对象主要用于出列客户端请求. 常用方法: String getParameter(String name) ...
- 常用的JSP内置对象(1)
常用的JSP内置对象 request对象主要用于处理客户端请求 request对象的作用是与客户端交互,收集客户端的Form.Cookies.超链接,或者收集服务器端的环境变量. request对象常 ...
- JSP内置对象的使用(一)
JSP九大内置对象是:request.response.session.application.out.pagecontext.config.page.exception. JSP常用的内置对象是:o ...
随机推荐
- Git如何回滚代码?
摘要: 多年以后,你面对一个需要回滚的Git仓库,准会想起这篇博客. 某一天,用户跟我反馈,他不能分配任务了.我去看了一下Fundebug捕获的报错信息: 可知,出错原因是前端发送的请求参数有问题.这 ...
- Web前端开发必备
前端学习相关书籍 关于书籍 HTML.CSS 类别书籍,都是大同小异,在当当网.卓越网搜索一下很多推荐.如果感觉学的差不多了,可以关注一下<CSS禅意花园>,这个很有影响力. Javasc ...
- Java 开源博客 Solo 1.9.0 发布 - 新皮肤
这个版本主要是改进了评论模版机制,让大家更方便皮肤制作,并发布了一款新皮肤:9IPHP. Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤.除此之外,S ...
- wap2app(一)-- 网站快速打包成app
工具:HBuilder,下载地址:http://www.dcloud.io/ 下载并安装HBuilder后,打开编辑器,选择:文件 -> 新建 -> 项目,出现如下图: 选择wap2app ...
- (办公)eclipse连接github cannot open git-upload-pack(git-receive-pack)
原文地址:https://blog.csdn.net/royal__moon/article/details/79427431 打开eclipse安装目录下的eclipse.ini添加一句:-Dhtt ...
- Linux/Unix 中 wheel 组的来源
使用过 Linux/Unix 的朋友应该知道,将用户添加都 wheel用户组,让用户可以通过在命令在前加 sudo 临时获取 root 用户的权限.但是有没有朋友会想知道为何这个用户组要交 wheel ...
- Nginx与Nginx-rtmp-module搭建RTMP视频直播和点播服务器
一.开发环境 Nginx地址: http://nginx.org/download/nginx-1.14.2.tar.gz Nginx-rtmp-module地址: https://github.c ...
- 智能POS正餐主副机模式FAQ(无桌台或桌台模块)
1.无桌台 (1).如果是初次使用,首先检查是否是新建的机器号,新建的机器是默认关闭桌台的,需要到模块管理中开启. 2.无桌台模块 (1).是否在主副机开启连接上后重启主机与副机,且同步数据.
- DataTable表头对不齐、添加参数等方法总结
tableData: 一:写这篇博客是因为我在网上找到了改变行颜色,没有找到改变td颜色的改变文章,也许好多朋友早就找到了或感觉这个太简单,但不管怎样我还是写下了这篇没有技术含量的一篇. 前提:引入依 ...
- RMAN命令DELETE操作总结
本篇总结一下RMAN命令中的DELETE操作,DELETE命令用于删除RMAN备份记录以及相应的物理文件. To delete physical backups and copies as well ...