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

🙈作者简介:练习时长两年半的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全栈开发
数据结构与算法
计算机组成原理
操作系统
数据库系统
物联网控制原理与技术
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于JavaWeb的考试系统中,可以使用ServletJSP来实现分数的计算和展示。具体实现步骤如下: 1.在前端页面中,设置一个提交按钮,当用户点击提交按钮时,将用户的答案提交到后台Servlet进行处理。 2.Servlet接收到用户提交的答案后,将其与正确答案进行比对,计算出用户的得分。 3.Servlet将用户的得分存储到数据库中。 4.在JSP页面中,通过查询数据库获取用户的得分,并将其展示给用户。 下面是一个简单的示例代码,用于演示如何实现分数的计算和展示: ```java // Servlet代码 public class ScoreServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户提交的答案 String answer = request.getParameter("answer"); // 计算用户得分 int score = calculateScore(answer); // 将用户得分存储到数据库中 saveScoreToDatabase(score); // 跳转到结果页面 request.setAttribute("score", score); request.getRequestDispatcher("/result.jsp").forward(request, response); } private int calculateScore(String answer) { // 根据用户提交的答案计算得分 // ... return score; } private void saveScoreToDatabase(int score) { // 将用户得分存储到数据库中 // ... } } // JSP代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>考试结果</title> </head> <body> <h1>您的得分是:<%= request.getAttribute("score") %></h1> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员老茶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值