JavaWeb+JSP+路径问题+跳转(HTML|Servlet|JSP)|这一篇就够了(超详细)

本文介绍了JavaWeb中的JSP技术,包括JSP的组成、HTML元素、Java脚本、表达式、指令、声明和动作。详细讲解了路径问题、HTML与JSP/Servlet之间的跳转,以及请求转发和重定向的区别。还阐述了在跳转过程中如何传递参数,是JavaWeb初学者的学习指南。

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

🙈作者简介:练习时长两年半的Java up主
🙉个人主页:老茶icon
🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎
📚系列专栏:Java全栈,计算机系列(火速更新中)
💭 格言:种一棵树最好的时间是十年前,其次是现在
🏡动动小手,点个关注不迷路,感谢宝子们一键三连

课程名:JavaWeb

内容/作用:知识点/设计/实验/作业/练习

学习:JavaWeb+JSP

环境与设备

1.软件:IntelliJ IDEA 2022.3.2
2.环境:Windows 11 and JDK 11

JSP

Java Server Pages

使用Java开发,运行在服务器上的页面,称为JSP。

JSP页面的后缀名为.jsp

由于最初由Servlet编写页面,会在Servlet中出现大量的HTML代码,使用极不方便,

由SUN公司主导推出JSP,在HTML页面中嵌入Java代码,简化了页面的编写过程,页面也成为动态页面。

JSP实际是一个java类,具体为一个Servlet,第一次访问某个JSP页面,相当于编译运行Servlet,所以会慢一些。

访问JSP的流程:编译对应的Servlet–>运行Servlet。

JSP的生命周期同Servlet。

使用JSP时,可以导入该依赖,在JSP中方便提示

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
    <scope>provided</scope>
</dependency>

JSP的组成

1.HTML元素*

2.Java脚本*

<%
	java代码;
%>

3.表达式*

用于在页面中输出变量或字符串。

无需分号。

<%=变量%>

4.注释

jsp注释在访问jsp时不会在浏览器中看到

html注释在访问jsp时会再浏览器中看到

<%--注释--%>

5.指令

<%@ 指令名 属性="值"%>
  • page指令
    • 用于设置当前页面的属性
  • include指令
    • 用于嵌入其他页面
  • taglib指令
    • 用于导入其他标签库

6.声明

可以在这里定义方法、全局变量等

<%! 
    void fun(){}
%>

7.动作

使用标签定义一些功能。

<jsp:单词></jsp:单词> 
//包含另一张页面
<jsp:include page="路径"></jsp:include> 

路径问题

绝对路径

完整路径

相对路径

  • /

    从项目根目录出发。即域名+端口号

  • ./

    从当前位置出发

  • …/

    退出当前目录后出发

如当前位于localhost:8080/shop/pages/index.html

在该页面中,如果使用

<img src='/xxx.jpg'>
表示访问localhost:8080/xxx.jpg

<img src='./xxx.jpg'>
表示访问localhost:8080/shop/pages/xxx.jpg

<img src='../xxx.jpg'>
表示访问localhost:8080/shop/xxx.jpg

跳转

HTML to HTML/JSP

<a href="另一个页面的路径">跳转</a>

<form action="另一个页面的路径">
    <input type="submit">
</form>

HTML to Servlet

<a href="某个servlet的URL映射">跳转</a>

<form action="某个servlet的URL映射">
    <input type="submit">
</form>

Servlet/JSP to Servlet/JSP/HTML

请求转发

request.getRequestDispatcher("目的路径").forward(request,response)
  • 使用请求转发跳转到目的地后,浏览器的地址栏是最初访问的路径
  • 可以在请求转发时,在request对象中保存数据,如request.getParameter()、request.setAttribute()
  • 在执行查询时,通常将查询后的结果保存在request对象中后,使用请求转发跳转到页面中

在这里插入图片描述

重定向

response.sendRedirect("目的路径");
  • 使用重定向跳转到目的地后,浏览器的地址栏是最终访问的目的地路径
  • 如果在重定向时使用request对象保存数据,后续无法获取保存的内容
  • 在执行增删改后使用重定向跳转到目的地,防止重复提交

在这里插入图片描述

跳转过程中传递参数

  • 由页面发送数据到servlet或jsp,通常使用表单元素或在某个URL后使用"?参数=值"方式提交参数,获取时使用request.getParameter(“参数”)获取

    <a href="xxxx?id=11">删除</a>
    
    <form action="xxxx" >
        <input type="hidden" name="id" value="11">
    </form>
    
    
    //返回值为String
    String str=request.getParameter("id");
    
  • 由servlet发送数据到页面,使用request.setAttribute(String str,Object obj)保存obj到请求对象中,命名为str,获取时使用request.getAttribute(String str)

    public class XXXServlet extends HttpServlet{
        protected void service(HttpServletRequest req,HttpServletResponse resp){
            List obj = new ArrayList();
            req.setAttribute("list",obj);
            req.getRequestDispatcher("xxx.jsp").forward(req,resp)
        }
    }
    
    <%
    	//返回值为Object类型
    	Object obj = request.getAttribute("obj");
    	List list = (List) obj;
    %>
    

总结

   好好学习,天天向上。

往期专栏
Java全栈开发
数据结构与算法
计算机组成原理
操作系统
数据库系统
物联网控制原理与技术
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Amin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值