请求转发,重定向

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

//page:指定的属性;

//language:jsp页面使用的脚本语言;

//import:导入类;

//pageEncoding:jsp文件自身编码;

//contentType:浏览器解析jsp的编码;
  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>

<body>

</body>
</html>

jsp内置对象:

1.out:向客户端输出内容;

2.pageContext:

3.request:请求对象,存储客户端向服务端发送的请求信息;

常见方法:

String getParameter(String name):根据请求的字段名key,返回字段值value;

String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value(checkbox)

void setCharacterEncoding("编码格式"):设置请求编码;

getRequestDispatcher("b.jsp").forward(request,response):请求转发的方式跳转页面   a跳转到b;

ServerletContext  getServerContext():通过项目的ServerletContext对象;

4.response:响应对象;

提供的方法:

1.void addCookie(Cookie cookis);服务端向客户端增加cookie对象;

2.void sebdRedirect(String locstion) throws IOException;页面跳转的一种方式(重定向);

3.void setContentType(String type):设置服务端响应的编码(设置服务端的ContentType类型)

  请求转发 重定向
地址栏是否发生改变 不变(check.jsp) 改变(success.jsp)
是否保留第一次请求时的数据 保留 不保留
请求的次数 1 2

转发:

张三(客户端)-服务窗口(a)-服务窗口(B)

重定向:

张三(客户端)-服务窗口(A)-去找B

张三(客户端)-服务窗口(B)-结束

5.session:

  1. Cookie(客户端,不是内置对象):Cooki是由服务端生成的,再发给客户端保存;

相当于本地缓存,客户端(hello.mp4,zs/abc)-服务端(hello.mp4;zs/abc)

作用:提高访问服务端的效率,但是安全行较差。

Cookie:name=value

javax.servlet.http.Cookie

public Coookie(String nsme,String value)

String getName()

String getValue()

void setMaxAge(int expiry);最大有效期(秒)

服务端准备Cookie:

response.addCookie(Cookie cookie)

页面跳转(转发,重定向)

客户获取cookie:request.getCookies();

建议cookie只保存英文数字,否则需要进行编码、解码

使用Cookie实现 记住用户名 功能

2.session:会话

a.浏览网站:开始-关闭

b.购物:浏览-付款-退出

c.电子邮件:浏览、写邮件、退出

开始-结束

session机制:

客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户的的信息);

并且每个session对象都会有一个唯一的sessionID(用于区分其他session);

服务端又会产生一个cookie,并且该cookie的name=JESSIONID,value=服务端sessionID的值;

然后服务端会在响应客户端的同时,将该cookie发送给客户端,至此客户端就有了一个cookie(JESSIONID);

因此,客户端的cookie就可以和服务端的session一一对应(JESSIONID-sessionID)

客户端在第二次请求服务端时:服务端会先用客户端的cookie中的JESSIONID去服务端的session中匹配sessionid,如果匹配成功(cookie   jessionid和session   sessionid),说明用户不是第一次访问;

session方法:

String getId():获取sessionid

boolean  isNew():判断是否为新用户(第一次访问)

void invalidate():使session失效(退出登录、注销)

setAttribute();

getAttribute();

void setMaxInactiveInterval(秒):设置最大有效非活动时间;

int getMaxInactiveInterval(秒):获取最大有效非活动时间;

Cookie:

不是内置对象,要使用必须要new;

但是,服务端会自动产生一个(服务端自动new一个cookie)name=JESSIONID的cookie,并返回给客户端

cookie和session的区别:

  session cookie
保存的位置 服务端 客户性
安全性 较安全 较不安全
保存的内容 Object String

JSP0大内置对象:

pageContext    JSP页面内容

request    请求对象

response   响应对象

session   会话对象

application   全局对象

config   配置对象(服务器配置信息)

out   输出对象

page   当前JSP页面对象(相当于java中的this)

exception  异常对象

四种范围对象:

pageContext    JSP页面内容             当前页面有效             页面跳转后无效

request    请求对象        同一次请求有效          其他请求无效(请求转发后有效;重定向后无效)

session   会话对象        同一次会话有效          无论怎么跳转,都有效;关闭/切换浏览器后无效;从登录-退出之间全部有效

application   全局对象       全局有效(整个项目有效)      整个项目运行期间都有效(切换浏览器任然有效);关闭服务、其他项目无效;

以上四个范围对象,通过setAttribute()赋值,通过getAttribute()取值;

以上四个范围对象,尽量使用最小的范围。因为范围越大,造成的性能损耗就越大;

以上四个对象共有的方法:

Object getAttribute(String name):根据属性名,或者属性值;

void setAttribute(String name ,Object obj):设置属性值(新增,修改)

setAttribute("a","b");如果a对象之前不存在,则新建一个a对象;

           如果a之前已经存在,则将a的值改为b

void removeAttribute(String name):根据属性名,删除对象

6.application:全局对象

String getContextPath()虚拟路径;

String getRealPath(String name):绝对路径(虚拟路径 相对的绝对路径)

7.config:

8.page:

9.exception:

原文地址:https://www.cnblogs.com/zxq6/p/11815967.html

时间: 2024-11-08 01:34:45

请求转发,重定向的相关文章

JSP总结报告二(域对象,请求转发,重定向)

一. JSP四大域对象介绍 1. pageContext  :  属性的作用范围仅限于当前 JSP 页面. 2. request:  属性的作用范围仅限于同一个请求. 3. session: 属性的作用范围限于一次会话, 浏览器打开直到关闭称之为一次会话(在此期间会话不失效). 4. application (servletContext ): 属性的作用范围限于当前 WEB 应用. 是范围最大的属性作用范围, 只要在一处设置属性, 在其他各处的 JSP 或 Servlet 中都可以获取到. 二

重定向与请求转发的区别

req.getRequestDiapatcher("hello.jsp").forward(req,resp);//重定向 resp.sendRedirect("login.jsp");//请求转发 重定向,服务器内部跳转.一次请求,跳转一次.Url不变. 请求转发,一次请求,2次跳转.请求的Url变成跳转成功的Url.

response请求转发、重定义、cookie

response:响应对象 提供的方法: void addCookie(Cookie cookie);服务端向客户端增加cookie对象 void sendRedirect(String location);throw IOExeption; :页面跳转的一种方式(重定向) void setContentType(String type):设置服务端的contentType类型 以下是编写下面的登入操作时需要注意到的细节: 1.name 属性用于在 JavaScript 中引用元素,或者在表单提

jsp学习之——关于请求转发和重定向的形象理解

1.重定向:是属于客户端行为,实现方法:response.sendRedirect() 从本质上讲等同于两次请求,前一次的请求对象不会保留,在浏览器上的直观表现是--地址栏的URL地址会改变. 2.请求转发:是属于服务器行为,实现方法:request.getRequsetDispatcher().forward(requset,response) 是一次请求,转发后请求对象会保存,浏览器上的直观表现就是--地址栏的URL地址不会改变.(服务器内部转发,所以客户端看不到地址栏的改变) 下面举个生活

举例说明重定向和请求转发的区别

重定向 HttpServletResponse对象的sendRedirect(java.lang.String location)方法称作重定向. 如果location地址前面加上“/”,则表示相对于Servlet容器的根来请求,比如http://localhost:8080:如果location地址前面没有加上“/”,则表示相对于当前请求的URI来寻找地址. 请求转发 RequestDispatcher的:forward(ServletRequest request, ServletRespo

请求转发与请求重定向

----请求重定向:客户端行为,response.sendRedirect(); 从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变. ----请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp); 其本质是一次请求,转发后请求对象会保存在request中,地址栏URL地址不会改变.

【Servlet】深入浅出Java重定向和请求转发

import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; import javax.servlet.*; import com.bjpowernode.exam.model.*; import com.bjpowernode.exam.manager.*; public class SearchStudentServlet extends HttpServlet { public

HTTP中的重定向和请求转发的区别

一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下: request.getRequestDispatcher("new.jsp").forward(request, response);   //转发到new.jsp response.sendRedirect("new.jsp");   //重定向到new.jsp 在jsp页面中你也会看到通过下面的方式实现转发: <jsp:forward page="apage.jsp"

JavaWeb_请求转发与重定向

1.主题 RequestDispather 请求转发接口. sendRedirect()重定向方法. 核心代码1 RequestDispather requestDispather = request.getRequestDispather("/"+path); requestDispather.forward(request,response); 核心代码2 response.sendRedirect(path) 请求地址栏不变,重定向地址栏变化. 请求保留request,重定向不保