响应重定向,请求转发,jsp,标签库博客,input-lable

本文深入解析HTTP响应重定向与请求转发的区别,包括301和302重定向,以及它们在服务器内部跳转的应用场景。同时,探讨了JSP与Servlet的关系,以及JSP生命周期和内置对象的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:响应重定向,和请求转发 概念

​ 响应重定向:

1:浏览器跳转302
2:请求次数多
3:地址会变
4:得不到原始请求参数
:response.sendredirect(“跳转 的页面?参数列表”);//地址栏会变
301 redirect: 301 代表永久性转移(Permanently Moved),

302 redirect: 302 代表暂时性转移(Temporarily Moved ),

Http 状态 200 标示没有任何问题发生,没问题ok.
404:找不到,
500:internal error系统错误,tomcat错误
400:请求无效
401:未授权
403:禁止访问

​ 请求转发:

1:服务器内部请求:
2:路径不变,
3:用户只能看见请求只有一次
4:得得到原始参数
5:在服务器中跳转,用户看不见,安全
requst.getrequesdispatcher(“result?isSuccess=RIGHT”).forward(request, response);

二:什么时候用哪种跳转:
1:请求转发多用于在服务器内部的多个处理阶段之间的衔接:A>b>C

内部跳转内部中有很多步骤,用请求转发,服务器,内部

request获取(get……)

jsp本质上也是一个servlet
多个servlet使用请求转发

2:响应重定向:业务处理结束,进入一个新的页面或调外部网页
response发送(send……)

三:扩展
f5:把之前的请求发一遍,把之前的流程重复执行一次
请求转发:重新提交,原参数重新提交
重定向:把当前网页刷新,不会把原参重新提交

jsp改配置:在Window下-》preference-》搜索jsp-》templates-》new jsp file(html 5)-》改所有的${encoding}改为utf-8

jsp:文件格式,本质上是一个servlet,服务器端一个组件
可以编写动态的页面,可以写java和html

四:常用语法:
四.1表达式元素

<%= %>=====><% response.getwriter %>、<%=request.getAttribute(“year”)%>、<% out.write%>
脚本元素:
<%java代码,可以写for循环%>

声明:比如说:new Date()需要导包import

默认声明<%!%>

四.2 JSTL标签库

标签库:
jstl:
<%@:表示指令
导入标签库:导包:jstl.jar和servlet.jar,
写指令:<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

日期 格式的指令

<%@ taglib prefix=f" uri=“http://java.sun.com/jsp/jstl/fmt” %>


  • jar -> taglib指令
  • c:forEach items="${data}" var varStatus
  • c:if test
  • c:choose/when/otherwise [test]
  • c:set
  • fmt:formatDate pattern
五:怎么找到jsp的.java和.class:

在随便的一个jsp页面中输入:<%=request.getServletContext().getRealPath(".")%>

运行后得到路径,找到temp0 下的work一直到 你要查找的项目名 ,一直查到jsp这个文件,可以看到jsp的class和java
查看他的java代码

六:jsp生命周期

jsp翻译成java代码

  • jsp翻译成java
    • 表达式元素 out.print(表达式代码) =>_jspService
    • 脚本元素 直接java代码运行=>_jspService
    • 静态部分(HTML或者文字) out.write(静态代码)=>_jspService
    • 声明元素 类中作为属性或者方法存在
    • 静态注释 out.write(静态代码),保留在原处 / 动态,直接不翻译
  • java编译成class文件
  • 执行
七:jsp为什么能直接使用request和response,

因为他是继承httpservlet,实际上jsp是一个servlet,有一个doget
,dopost的方法,直接有request和response

八:九大内置对象:

request,response,

context:表示上下文

九:路径问题:
  • html路径

    • form action
    • a链接 href
    • 图片
    相对路径:
  		1:没有' / '  默认相对于当前路径的上一级目录:
		(跳转到loginservlet,  如:项目名/a/aa---->项目名/a/loginservlet)
		2:HTML <base>链接默认打开方式标签元素
		<base href="<%=application.getContextPath() %>/" />
		校正相对路径为 当前上下文路径,
		通过这个base标签,在本个jsp页面的所有跳转都是从  (项目名/跳转页面或servlet)  
绝对路径:
  		1:' / '   相对于tomcat的根路径
		(跳转到loginservlet,  如:http://localhost:8080/开始的
		
		2:- Servlet(路径在根目录下;路径不在根目录下  /product/add)
			  - getRequestDispatcher(url).forward()
				    - 绝对路径  /
				    - 相对于 上下文路径
			response:
			  - sendRedirect(url)
				    - 绝对路径
				    - 相对于tomcat的根路径
				    - 手动添加上下文路径response.sendRedirect(request.getContextPath()+"/b");

request:一般需要'/',表示从项目名到指定跳转页面:
如:request.getRequestDispatcher("/index,jsp").forward(request,response);
--->项目名/index.jsp(servlet一样的,jsp本质上是一个servlet)
response:如果需要绝对路径:
response.sendRedirect(request.getContextPath()+"/index.jsp");		

知识梳理:

页面与页面间不需要来回的传request,使用response使用响应重定向,

大多数使用请求转发的情况,为了使数据的安全,不容易被破解,使用(请求转发)request.getreques……,也知道了jsp实际上是一个servlet,可以把它看成多个servlet传输数据,所以多数情况下使用的是请求转发。jap代码相当于客户端为我们做了一些基础的设定,本质上的静态页面还是使用的是response.getwriter()重命名后变成九大内置对象的out了。

怎么把按钮与文本相互关联 input-----label:
		<input type="checkbox" value="true" name="autologin" id="autologin" />
		<label for="autologin">是否记住用户名密码</label>
<!-- input标签下的id与label下的for属性,组成一对表单控件定义标签  -->

input跳转页面可以在里面添加a标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值