JSP--内置对象

1、out对象

用来向客户端输出各种数据类型的内容;对应用服务器上的输出缓冲区进行管理。

主要有out.print()out.println()两种方法,两者的区别是out.print()函数在输出完毕后并不会换行,out.println()函数在输出完毕后会结束当前行,下一个输出语句将会在下一行开始输出。但在输出中换行在网页上并不会换行。在网页上换行应该打印字符串“<br>”。

2、request对象

负责得到客户端的请求信息,主要有以下几种方法:

String getMethod()得到提交方式;

String getRequestURI()得到请求的URL地址;

String getProtocol()得到协议名称;

String getServletPath()获得客户端请求服务器文件的路径;

String getQueryString()得到URL的查询部分;

String getServerName()得到服务器名称;

String getServerPort()得到服务器端口号;

String getRemoteAddr()得到客户端的IP地址。

此外,request对象还可以获得客户端的参数,其常用的两种方法如下:

String getParameter(String name) 获得客户端传送给服务器的name值,当传送给此函数的参数名没有实际参数与之对应时返回null;

String[] getParameterValues(String name)以字符串数组的形式返回指定参数的所有值。

3、response对象

负责向客户端发出响应,可利用response对象进行重定向,重定向就是跳转到另一个页面。方法如下:

response.sendRedirect(目标页面路径);

注意:重定向方法的另一种主要形式:

<jsp:forward page=""></jsp:forward>

两者区别:①从浏览器的地址显示来看:

forward方法属于服务器端去请求资源,服务器直接访问目标地址,并对该目标地址的响应内容进行读取,再把读取的内容发给浏览器,因此客户端浏览器的地址不变;

response方法是告诉客户端,使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍,所以地址显示栏会改变。

②从数据共享来看:

forward方法转发的页面以及转发到的目标页面能够共享request里面的数据;

response方法转发的页面以及转发到的目标页面都不能够共享request里面的数据;

③从功能来看:

forward方法只能在同一个Web应用程序内的资源之间转发请求,可以理解为服务器内部的 一种操作;

response方法能够重定向到当前应用程序的其他资源,还能重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点资源。

④从效率来看:

forward方法效率较高,因为跳转仅发生在服务器端;

response方法效率相对较低,因为相当于又进行了一次请求。

4、session对象,负责保存同一客户端一次会话过程中的一些信息。

5、application对象,表示整个应用的环境信息。

6、exception对象,表示页面上发生的异常,可以通过它获得页面异常信息。

7、page对象,表示的是当前JSP页面本身,如Java类定义中的this。

8、pageContext对象,表示此JSP的上下文。

9、config对象,表示此JSP的ServletConfig。

附:Cookie操作

在写Cookie时主要用到以下方法:

response.addCookie(Cookie c):通过该方法将Cookie写入客户端;

Cookie.setMaxAge(int second):通过该方法设置Cookie的存活时间,参数表示存活的秒数。

练习1、页面1输入用户名和密码,页面2处理数据,将正确的用户名和密码输出打印到页面3,否则打印出“登录失败”到页面4。

页面1代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <body>
    <form action="Jsp2.jsp">
      用户名:<input type="text" name="user">
      密码:<input type="password" name="password">
      <input type="submit" name="submit" value="提交">
    </form>
  </body>
</html>

页面2代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <body>
    <%
      String s1=request.getParameter("user");
      String s2=request.getParameter("password");
      if(s1.equals("qwert")&&s2.equals("123456")){
    %>
      <jsp:forward page="Jsp3.jsp"></jsp:forward>
      <%
      }else{
      %>
      <jsp:forward page="Jsp4.jsp"></jsp:forward>
     <%
      }
     %>
  </body>
</html>

页面3代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <body>
    <% 
      out.print("登录成功"+"<br>");
      out.print("用户名为:"+request.getParameter("user")+"<br>");
      out.print("密码为:"+request.getParameter("password")+"<br>");
    %>
  </body>
</html>

页面4代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <body>
    <% 
      out.print("登录失败");
    %>
  </body>
</html>

练习2、页面1计算指定数据的平方,页面2计算原数据的立方。(使用Cookie方法)

页面1代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <body>
    <%
      String s1="10";
      int num=Integer.parseInt(s1);
     %>
     该数字的平方为:<%=num*num %>
    <%
      Cookie cookie=new Cookie("num",s1);
      cookie.setMaxAge(500);
      response.addCookie(cookie);
     %>
     <a href="Jsp6.jsp">页面2</a>
  </body>
</html>

页面2代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html> 
  <body>
    <%
      String s1=null;
      Cookie[] cookies=request.getCookies();
      for(int i=0;i<cookies.length;i++){
        if(cookies[i].getName().equals("num")){
          s1=cookies[i].getValue();
          break;
      }
  }
  int number=Integer.parseInt(s1);
   %>
   该数字的立方为:<%=number*number*number %>
  </body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_65089091/article/details/129450677