JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解

2024-05-02 19:38

本文主要是介绍JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、绝对路径和相对路径
①开发时建议使用据对路径,使用绝对路径肯定没有问题,但是用相对路径可能会有问题。
在由Servlet转发到JSP页面时,此时在浏览器地址栏显示Sevvlet路径,若JSP页面的超链接还是相对与该JSP页面的地址,
则可能会出现路径混乱的问题。

例如: A.jsp———>B.jsp———>C.jsp

(子目录)/Demo7_RelativePathAndAbsolutePath/A.jsp
                :<a href="B.jsp">To B Page</a>(子目录)/Demo7_RelativePathAndAbsolutePath/B.jsp
                :<a href="../C.jsp">To C Page</a>(根目录)/C.jsp
            :<a href="Demo7_RelativePathAndAbsolutePath/A.jsp">To A Page</a>

一般开发过程中页面之间不会进行跳转,都使用Servlet进行中转之后在选择跳转的页面

(子目录)<a href="<%=request.getContextPath()%>/Demo7_RelativePathAndAbsolutePath/B.jsp">To B Page</a>
(子目录)<a href="<%=request.getContextPath() %>/C.jsp">To C Page</a>
(根目录)<a href="<%=request.getContextPath()%>/pathServlet">To A Page</a>
Servlet:
@WebServlet("/pathServlet")
public class PathServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {List<String> cities = Arrays.asList("北京","上海","广州");request.setAttribute("cities", cities);//通过转发的方式响应C.jsprequest.getRequestDispatcher("/Demo7_RelativePathAndAbsolutePath/A.jsp").forward(request, response);}}

②绝对路径:相对与当前web应用的根路径的路径。即任何路径都要带上ContextPath
例如http://localhost:8080/Demo7_Cookie_Session/C.jsp,C.jsp就可以说是绝对路径

③如何使用绝对路径:
若/代表的是站点的根目录,在其前面加上contextPath()即可,而contextPath可以由request或
application的getContextPath()方法获取。
例如:

        <a href="<%=request.getContextPath()%>/Demo7_RelativePathAndAbsolutePath/B.jsp">To B Page</a><a href="<%=request.getContextPath() %>/C.jsp">To C Page</a><a href="<%=request.getContextPath()%>/pathServlet">To A Page</a>
    request.getRequestDispatcher("/Demo7_RelativePathAndAbsolutePath/A.jsp").forward(request, response);     

2.JavaWeb开发过程中/代表什么
①当前web应用的根路径:http://localhost:8080/Demo7_Cookie_Session/容器
其中/交由Servlet来处理

1).request请求转发时:request.getRequestDispatcher("/Demo7_RelativePathAndAbsolutePath/A.jsp").forward(request, response);
2).web.xml文件中Servlet-mapping<servlet-mapping><serlet-name>step2Servlet</servlet-name><url-pattern>/step2Servlet</url-pattern></servlet-mapping>3).各种定制标签   

②web站点的根路径:http://localhost:8080/
其中交由浏览器处理

        1).超链接<a href="/pathServlet">To A Page</a>2).表单中的action<form action="/index.jsp" method="post"></form> 3).做请求重定向的时候response.sendRedirect("/step-2.jsp");

二、Servlet注解和Servlet配置文件

在Servlet3.0之前使用Servlet都需要在web.xml中配置Servlet,Servlet3.0之后可以使用@WebServlet注解的方式进行配置,使用方便。所以不管是在超链接或者form表单的action中都可以使用这两种方式,但是还是action中使用多一点,一般不会页面之间互相访问,而且action中同时也使用绝对路径,以免造成混乱。

方式一在web.xml中配置:

 <servlet><display-name>step1Servlet</display-name><servlet-name>step1Servlet</servlet-name><servlet-class>com.shopCart.Servelt.Step1Servlet</servlet-class></servlet><servlet-mapping><servlet-name>step1Servlet</servlet-name><url-pattern>/step1Servlet</url-pattern></servlet-mapping>

方式二:使用@WebServlet注解


@WebServlet("/pathServlet")
public class PathServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {List<String> cities = Arrays.asList("北京","上海","广州");request.setAttribute("cities", cities);//通过转发的方式响应C.jsprequest.getRequestDispatcher("/Demo7_RelativePathAndAbsolutePath/A.jsp").forward(request, response);}}

注意:这两种方式不能同时使用,否则会出现异常:
Server Tomcat v7.0 Server at localhost failed to start.
Caused by: java.lang.IllegalArgumentException: The servlets named [step1Servlet] and [com.shopCart.Servelt.Step1Servlet] are both mapped to the url-pattern [/step1Servlet] which is not permitted

这篇关于JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955022

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚