gpt4 book ai didi

java - getRequestURI 从用户获取请求时出现问题

转载 作者:行者123 更新时间:2023-12-01 18:31:08 27 4
gpt4 key购买 nike

我已在 servlet 中将 url 模式设置为 "/register/*" 。我还研究了如何仅从 getReuestURI() 中获取从“/register”开始的模式。

我用过request.getRequestURI().substring(request.getContextPath().length())获取"/register/family"但它似乎还返回了我的 header.jsp 中包含的脚本源。

标题.jsp

<head>
<title>Health Center</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<script type="text/javascript" src="js/cufon-yui.js"></script>
<script type="text/javascript" src="js/arial.js"></script>
<script type="text/javascript" src="js/cuf_run.js"></script>
</head>

GlassFish Server 4 堆栈跟踪:

INFO:   /register/family
INFO: /register/js/script.js
INFO: /register/css/style.css
INFO: /register/js/cufon-yui.js
INFO: /register/js/jquery-1.3.2.min.js
INFO: /register/js/arial.js
INFO: /register/js/cuf_run.js
INFO: /register/images/search.gif

如何解决此问题,以便我只能获取 "/register/family"仅有的?任何帮助,将不胜感激。谢谢!

已编辑:1

我使用 system.out.println 来测试我得到的请求值。我还注意到,即使我使用 request.getServletPath() 它也会输出多个:

INFO:   /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register
INFO: /register

我还注意到我的 css 布局不会被使用,因为它被重定向到另一个页面。

编辑2:

我想从 requestURI 中获取“/register/family”,因为这将处理请求并确定下一页。这是我的代码流程

     protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


String userPath = request.getRequestURI().substring(request.getContextPath().length());


if (userPath.equals("/register/family")) {
// perform code registration
userPath = "/familyRegistration"; // this is the .jsp page
}
else if (userPath.equals("/register/patient")) {
// perform patient registration

userPath = "/patientRegistration"; // this is . the .jsp page
}

// use RequestDispatcher to forward request internally
String url = "/WEB-INF/view" + userPath + ".jsp";

try {
request.getRequestDispatcher(url).forward(request, response);
} catch (Exception ex) {
ex.printStackTrace();
}
}

编辑3

修复了就像下面回答的 @Serg 一样。还修复了 CSS 未加载的问题!我用过<link href="${pageContext.request.contextPath}/css/style.css" rel="stylesheet" type="text/css" />正如BalusC在这个类似的post中所说的。

最佳答案

如果我理解正确的话,你的 css 和 js 文件是相对于 servlet 路径 (/register) 的,这是不常见的。如果它们直接位于 Web 应用程序的根目录,则不会出现此问题。你的标题应该是:

<head>
<title>Health Center</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/js/script.js"></script>
<script type="text/javascript" src="/js/cufon-yui.js"></script>
<script type="text/javascript" src="/js/arial.js"></script>
<script type="text/javascript" src="/js/cuf_run.js"></script>
</head>

如果您的应用程序可以接受,则只有第一行 INFO:/register/family 会被您的 servlet 拦截,因为其他行不会以 /register 开头>.

关于java - getRequestURI 从用户获取请求时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com