我在我的servlet中将我的url模式设置为"/register/*"
。我还研究过从getReuestURI()开始只从“/ register”开始获取模式。
我已使用request.getRequestURI().substring(request.getContextPath().length())
获取"/register/family"
,但它似乎也返回了header.jsp中包含的脚本源。
header.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未加载问题!我在这个类似的post中使用了<link href="${pageContext.request.contextPath}/css/style.css" rel="stylesheet" type="text/css" />
作为BalusC Said。
答案 0 :(得分:2)
如果我正确理解,你的css和js文件是相对于 uncommon 的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
开头。
答案 1 :(得分:2)
你可以得到斜杠的最后一个索引并创建uri的子字符串,这样就得到没有jsp名称的pas
String userPath = request.getRequestURI().substring(0,request.getRequestURI().lastIndexOf("/"));
希望这有帮助。