Java 如何获取登录/错误文件中显示的用于Tomcat身份验证的图像和CSS
我的web应用程序有Tomcat身份验证,我的问题是,用作登录和错误表单的login.jsp和error.html文件似乎不支持样式或图像。我试过获取文件的路径,但它们显示它们在正确的路径中,所以我不明白为什么它们不支持图像或CSS?你有什么想法可以让css实现这个功能吗 编辑: 我以下面的方式进行了测试,如果我尝试访问一个安全路径,并将被重定向到login.jsp,它位于Java 如何获取登录/错误文件中显示的用于Tomcat身份验证的图像和CSS,java,css,authentication,tomcat,Java,Css,Authentication,Tomcat,我的web应用程序有Tomcat身份验证,我的问题是,用作登录和错误表单的login.jsp和error.html文件似乎不支持样式或图像。我试过获取文件的路径,但它们显示它们在正确的路径中,所以我不明白为什么它们不支持图像或CSS?你有什么想法可以让css实现这个功能吗 编辑: 我以下面的方式进行了测试,如果我尝试访问一个安全路径,并将被重定向到login.jsp,它位于 D:\Dropbox\EclipseWorkspace\.metadata\.plugins\org.eclipse.ws
D:\Dropbox\EclipseWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp7\wtpwebapps\GenTreeUploader\
在login.jsp所在的同一目录中有index.html。如果我直接访问它,它也会打开,并显示它与login.jsp位于同一目录中。现在的区别是,对于index.html css和图像,它们可以工作,而对于login.jsp,它们不能工作,文件的样式模板基本相同。目录与网页内容相同,如下图所示:
My login.jsp中包含以下代码:
<!DOCTYPE html>
<html lang="en">
<HEAD>
<meta charset="utf-8">
<TITLE>GenTreeFromWord (GDIA) </TITLE>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
</HEAD>
<BODY>
<div class="navbar">
<div class="navbar-inner">
<div class="container"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="#"><img src="images/gdia_logo.png" width="111" height="30" alt="GDIA logo" /></a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="/GenTreeUploader/Servlet?action=backToGmis">Go back to GMIS</a></li>
<li class="active"><a href="/GenTreeUploader/Servlet?action=home">GenTreeFromWord (GDIA)</a></li>
<li><a href="/GenTreeUploader/Servlet?action=contact">Contact</a></li>
<li><a href="/GenTreeUploader/Servlet?action=about">About</a></li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<div class="span1">
</div>
<div class="span10">
<!-- Old page body with scriptlets -->
<h1>
<center>Welcome to GDIA<center>
<% System.out.println(request.getRealPath("/")); %>
<%
String url = ((HttpServletRequest)request).getRequestURL().toString();
String queryString = ((HttpServletRequest)request).getQueryString();
System.out.println(url + "?" + queryString);
%>
</h1>
<p>
<!-- login body start -->
<div class="span4"></div>
<div class="row-fluid container span4">
<form class="form-signin" name="credentials" action="j_security_check" method="post">
<h4 class="form-signin-heading">Please sign in</h4>
<input type="text" name="j_username" class="input-block-level" placeholder="Username" tabindex="1">
<input type="password" name="j_password" class="input-block-level" placeholder="Password" tabindex="2">
<button class="btn btn-large btn-primary" type="submit" value="Login" tabindex="3">Sign in</button>
<br><br>
</form>
</div>
<div class="span4"></div>
<!-- login body end -->
</p>
<!-- Body ends here -->
</div>
<div class="span1">
</div>
</div>
</div>
</BODY>
</HTML>
GenTreeFromWord(GDIA)
欢迎来到GDIA
请登录
登录
此问题的答案与此处问题的答案相同:
额外的细节是,通过之前的测试,路径被弄乱了,所以我将它们更改为绝对路径,我通过检查login.jsp文件的源代码发现了这一点。。。感谢大家帮助制定了这个答案。我不知道如何对error.html这样的文件禁用CSS,很可能这是一个目录问题。你能发布上面error.html的代码和你的目录结构吗?你的图像和css文件是否在一个安全路径中,只有在登录后才能访问?@greybeardgeek不,它们不是。以前是这样,但我改变了安全路径,因为我认为这些资源在我通过身份验证之前是不可访问的,但是现在我保护的不是所有资源,而是一个文件夹(所有内容都在Admin下)@user2019515是的,我想知道这是怎么可能的,因为如果我直接访问索引文件,css就会工作,但是,如果Tomcat加载登录/错误文件,这些样式将不再工作。我怎样才能找出是什么原因造成的?我已编辑了代码。作为测试,请尝试删除所有安全性,然后点击登录页。如果它起作用,那么它就是一个安全问题。如果没有,那就是路径问题。我还想尝试一个独立版本的tomcat,而不是IDE插件。