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

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  6. %>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>"/>
  11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  12. <title>Insert title here</title>
  13. </head>
  14. <%
  15. String error = (String)request.getAttribute("msg");
  16. if(error==null){
  17. error="";
  18. }
  19. %>
  20. <body>
  21. <div align="center">
  22. <h1>登录页面</h1>
  23. <form action="login/control.jsp" method="post">
  24. 用户名:<input name="username"><br>
  25. 密码:<input type="password" name="password"><span style="color: red"><%=error %></span><br>
  26. <input type="submit" value="登录">
  27. </form>
  28. </div>
  29. </body>
  30. </html>

  control.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  6. %>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>"/>
  11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  12. <title>Insert title here</title>
  13. </head>
  14. <%
  15. request.setCharacterEncoding("utf-8");
  16. //1.拿到页面表单数据
  17. String username = request.getParameter("username");
  18. String password = request.getParameter("password");
  19. if("admin".equals(username)&&"123456".equals(password)){
  20. //2.登录成功 跳转到成功页面
  21. //跳转方式:1.重定向 2.转发
  22. //统计登录次数
  23. Integer count = (Integer)application.getAttribute("count");
  24. if(count==null){
  25. count = 1;
  26. }else{
  27. count++;
  28. }
  29. application.setAttribute("count", count);
  30.  
  31. session.setAttribute("username", username);//将用户信息保存在session中
  32. request.setAttribute("welcome", "热烈欢迎");//往请求中添加新的参数,特点是可以添加任何数据类型
  33. response.sendRedirect("success.jsp");
  34. //request.getRequestDispatcher("success.jsp").forward(request, response);
  35. }else{
  36. //3.登录失败 调回登录页面
  37. //response.sendRedirect("login.jsp?error=true");
  38. request.setAttribute("msg", "用户名密码错误");
  39. request.getRequestDispatcher("login.jsp").forward(request, response);
  40. }
  41. %>
  42. <body>
  43.  
  44. </body>
  45. </html>

  success.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  6. %>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>"/>
  11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  12. <title>Insert title here</title>
  13. </head>
  14. <%
  15. //1.从登录页面的请求中获取表单参数
  16. String username = request.getParameter("username");
  17. //2.从控制页面的请求中获取新增的参数
  18. String welcome = (String)request.getAttribute("welcome");
  19. //3.从session中获取用户信息
  20. String username2 = (String)session.getAttribute("username");
  21. if(username2==null){//没有登录
  22. response.sendRedirect("login.jsp");
  23. }
  24. String url = application.getRealPath("");
  25. Integer count = (Integer)application.getAttribute("count");
  26. %>
  27. <body>
  28. <h1>登录成功!<%=welcome+username2 %>,您是第<%=count %>位登录本网站的会员</h1>
  29. <%=url %>
  30. </body>
  31. </html>

3-jsp 内置对象、转发与重定向的更多相关文章

  1. jsp内置对象 转发与重定向的区别

    jsp 内置对象  转发与重定向的比较 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重 ...

  2. JavaWeb——JSP内置对象request,response,重定向与转发 学习总结

    什么是JSP内置对象 九大内置对象 requestJSP内置对象 request对象常用方法 request练习 responseJSP内置对象 response练习 response与request ...

  3. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. Java遇见HTML——JSP篇之JSP内置对象(上)

    一.JSP内置对象简介 1.1.内置对象简介 JSP内置对象是WEB容器中创建的一组对象,可以直接使用不需要new,如截图中的out 对象. JSP有九大内置对象: 五大常用对象: out.reque ...

  5. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

  6. JSP内置对象详解

    jsp中内置对象:request.response.session.applecation.out.pagecontesx.config.page.exception.cookie 1.request ...

  7. JSP内置对象(上)

    在JSP中为了简化页面的开发提供了一些内置的对象.这些对象不需要由JSP的编写者通过new关键字实例化,他们都由容器实现和管理,在所有的JSP页面中都可以使用内置对象. JSP中共有9大内置对象: o ...

  8. jsp内置对象的方法

    JSP内置对象的方法:out:out.print();request:request对象主要用于出列客户端请求.   常用方法:    String getParameter(String name) ...

  9. 常用的JSP内置对象(1)

    常用的JSP内置对象 request对象主要用于处理客户端请求 request对象的作用是与客户端交互,收集客户端的Form.Cookies.超链接,或者收集服务器端的环境变量. request对象常 ...

  10. JSP内置对象的使用(一)

    JSP九大内置对象是:request.response.session.application.out.pagecontext.config.page.exception. JSP常用的内置对象是:o ...

随机推荐

  1. 为什么越来越少的人用jQuery

    摘要:JQuery该退役了. 原文:为什么越来越少的人用jQuery 作者:Lemonade Fundebug经授权转载,版权归原作者所有. 最早期的开发,大多都使用jQuery,它给我们带来了很多的 ...

  2. 微信小程序之封装http请求

    下面将封装http请求服务部分的服务以及引用部分 // 本服务用于封装请求 // 返回的是一个promisepromise var sendRrquest = function (url, metho ...

  3. h5+js视频播放器控件

    由于h5兼容性问题,很多浏览器对于插入视频播放的支持都大不相同.火狐支持的比较完整,谷歌则支持的不是很好,很多功能都不能实现,这就需要我们去自制一个播放界面,去兼容不同的浏览器. 只插入一个视频时,浏 ...

  4. 兼容浏览器的div透明

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. [JavaScript]手机滑动图片

    思路 1.用ul ,li 来装载滑动的图片,超出部分隐藏 2.滑动是通过改变ul的位置来实现 布局 模块 1: 根据li元素个数去设置ul的宽度 1.1 获取ul元素 1.2 获取li元素的个数 1. ...

  6. Duplicate entry '0' for key 'PRIMARY'

    一般使用ORM时,提交新增实体时, mysql会出现此错误:Duplicate entry '0' for key 'PRIMARY' 原因是插入语句,未提供主键的值,且主键是非自增长的. 解决办法是 ...

  7. 父类通过泛型获得子类Class类型 以及Type体系

    1.背景介绍 在实现SSH框架中,DAO层向数据库持久化的过程中,因为大部分保存对象的方法都会调用到sava():所有索性就把save delete update select 方法进行封装到父类中, ...

  8. ReactNative编写规范

    <一>  React 代码规范 文件与组件命名 扩展名: 使用.js作为js文件的扩展名.如果同一个文件夹下有同名而不同作用的js文件,则通过中缀(小写)进一步区分,例如:HomePage ...

  9. 「破解」Xposed强

    「破解」Xposed强 Hook Hook Hook! 两张图片,第一张是我的微信截图,第二张是我从微信Hook出的一些类名. 一段代码,Hook这些类名出来的源码. 知道这些我们能干嘛,当然是分析( ...

  10. swipe使用及竖屏页面滚动方法

    基于swipe4写了一个移动端的全屏滚动效果  但是图片始终不能自适应屏幕设备大小  这里记录一下 开始的时候要设置  移动端配置 <meta name="viewport" ...