- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经搜索过但找不到我的场景,这很烦人。
当我在 Eclipse 中运行我的项目时,它工作正常,但是当我(通过 WAR)部署到我的生产服务器时,我得到 JasperException File Not Found。这只会发生在不在根文件夹中的 JSP 上。我很难过。本质上,我正在为我的安全过滤器使用/secure/上下文。
文件结构: FileStructure in Eclipse
Web.XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID" version="4.0">
<display-name>Name Here</display-name>
<description>Description Here</description>
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>com.example.package.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/secure/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
JSP(是的,这是现在的整个 JSP,因为我才刚刚开始):*注意:JSTL成员是在header中加载的
<%@include file="/inc.header.jsp"%> <!-- file-not-found -->
<div class="m-2">
<h3>SECURE INDEX</h3>
<h5>User Details</h5>
<table class="table table-sm table-hover table-responsive table-bordered">
<tbody>
<c:forEach var="detail" items="${user.userdetails}">
<tr>
<td><c:out value="${detail.key}"/></td>
<td><c:out value="${detail.value}"/></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<%@include file="/inc.footer.jsp"%> <!-- file-not-found -->
错误信息:
Exception
org.apache.jasper.JasperException: /index.jsp (line: [1], column: [2]) File [/inc.header.jsp] not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:292)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:98)
org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:345)
org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:380)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:481)
org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1797)
org.apache.jasper.compiler.Parser.parse(Parser.java:141)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:127)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:202)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:385)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:362)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:346)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:383)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
非常感谢任何想法。
编辑 --- 我发现如果我在“不安全”文件夹中做同样的事情,它会工作一秒钟。所以有些事情我无法全神贯注……AuthFilter 非常简单,我看不出有什么问题。
AuthFilter.java:
package com.example.package;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
//import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
// @WebFilter("/AuthFilter") /* removed in favor of web.xml */
public class AuthFilter implements Filter {
//private ServletContext context;
public void init(FilterConfig fConfig) throws ServletException {
//this.context = fConfig.getServletContext();
//this.context.log("AuthenticationFilter initialized");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
//String uri = req.getRequestURI();
//this.context.log("Requested Resource::"+uri);
//System.out.println("Requested Resource::"+uri);
HttpSession session = req.getSession(true);
Boolean isLoggedIn = false;
if (session != null) isLoggedIn = (Boolean)session.getAttribute("isLoggedIn");
if (isLoggedIn == null) isLoggedIn = false;
if( !isLoggedIn ){
//this.context.log("Unauthorized access request");
res.sendRedirect("/login.jsp");
}else{
// pass the request along the filter chain
chain.doFilter(request, response);
}
}
public void destroy() {
//TODO close any resources here
}
}
编辑:我可能正在做某事。提示:这是一个“虚拟上下文”或任何你称之为的东西。我的http://localhost/在哪里实际上不起作用。必须是 http://app.example.com/被Tomcat识别。我在想 tomcat 不恰本地将我的“安全”文件夹解析为独立的网络应用程序。我在这个系统上有多个虚拟主机,没有碰巧使用这个概念,也没有子文件夹索引文件。当我将页眉/页脚文件移动到/secure/时出现新错误,我现在收到“绝对 uri: [ http://java.sun.com/jsp/jstl/core] 无法在 web.xml 或随此应用程序部署的 jar 文件中解析” .... 因此,我认为 Tomcat 认为我的/secure/是一个独立的应用程序。
Server.xml 条目:
<Host name="app.example.com" appBase="webapp_hosts/app.example.com" unpackWARs="false" autoDeploy="true" reloadable="true">
<Alias>app.example.server</Alias>
<Alias>app.example.local</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="crm_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/" docBase="" debug="0" reloadable="true"/>
</Host>
最佳答案
您是说,如果将 jsp 移动到安全文件夹中,所有请求都会失败。此请求将由您的过滤器过滤,如果不查看过滤器的实现,很难找到答案。
如果可以,请分享过滤器和监听器。
关于java - JSP/JasperException : File [/xyz. jsp] 找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52941784/
('xyz' != 'xyz') 和 NOT ('xyz' = 'xyz') 之间有什么区别吗? 虽然我在 Oracle DB 的上下文中询问,但也想知道其他语言的相同情况。 差异主要在于处理速度和所
我注意到定义了 simpleType 或 complexType,并且在模式文件中的多个元素的声明中使用了这些类型,simpleType 或 complexType 生成了一个方法签名作为“JAXBE
我在 XYZ 的 3D 空间中将对象旋转 90 度步长 (rX rY rZ)。角度限制为 0-360 度,我使用以下命令来旋转矩阵: Matrix.rotateM(mModelMatrix, 0, r
recursivePrint 函数将递归地显示文件和文件夹,我已经调用了一个函数来搜索文件中的单词此代码适用于小号。文件数但是当我使用所有目录时,它给出了内存不足错误java堆空间 File[] ma
我有一个简单的 html 网站,其中包含 50 多个 html 页面。从 statistics-script 中,我有时会在 xyz.html/(重定向到 404)而不是 xyz.html 之类的页面
我对一个位置(原始文件夹)中的所有文件进行哈希处理,然后将哈希值写入变量,然后对另一位置(目标文件夹)中的所有文件执行相同的操作: $origin = Get-ChildItem .\Test1 |
我正在编写一个包含键值对集合的重要类,在编译期间我收到一个我无法弄清楚的非常奇怪的错误。在一个与这里的函数非常相似的函数中,但由于所需代码的复杂性而没有上下文,我收到错误: TValue& opera
我正在尝试做一些非常简单的事情。 场景如下:我有一个整个网站与支持推送状态的浏览器配合得很好。该网站的工作基础是该语言是“实际页面”,例如: /en/whatever/etc = index.en.
在java脚本(或jquery)中,有什么区别 var a = xyz[] var a = xyz{} 我在互联网上搜索但找不到任何答案?如果有任何差异,请告诉我。 最佳答案 这是无效的语法。 var
我正在通过以下步骤在 Android 中进行 JSON 解析: 使用 HttpPost 对象从网络服务获取 XML 响应。 将此 XML 转换为 JSON 字符串,然后再转换为 JSON 对象。 现在
有什么区别: class A { public: void virtual method1() {...}; virtual void method2() {...}; }; 编译器(编辑:Apple
我正在尝试使用 configure、make、make install 三部曲来编译 c 源代码。 由于我想编译源代码,以便它们使用默认情况下未使用的另一个库 (XYZ),因此我可以使用 ./conf
在 MySQL 中,如何将表的列名从“sum(xyz)”更改为“xyz”?我已经尝试了以下解决方案来更改列名: Change Column Name in MySQL Rename column SQ
不能覆盖委托(delegate)函数, didFinishLaunchingWithOptions 和其他与应用程序委托(delegate)相关的函数都很好,但是当我尝试使用 application(
Tally-ho 小伙子们, 这个问题认为线性代数的艺术是数学中我无法解决的地方。所以我希望你们能帮助我 :D。 我正在尝试为一款名为《骑马与砍杀》的游戏创建单人自动踢球作弊。这个 autokicke
我正在 typescript 中访问导入的nodejs模块的函数,编译器会为每个方法调用或属性访问发出给定的错误。这是我的声明: import imageProc = module('imagePr
这个问题在这里已经有了答案: What is wrong with below code (3 个答案) What does sizeof(&array) return? (4 个答案) 关闭 9
为了好玩,我决定制作类似于 Markdown 的东西。根据我过去对正则表达式的一些小经验,我知道它们有多么强大,所以它们将是我所需要的。 所以,如果我有这个字符串: Hello **bold*
假设我有一个目录,里面有一堆网站名称。 即 dev.domain.com dev.domain2.com dev.domain3.com 如何将它们重命名为 .com在使用管道和/或重定向 bash
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicate: difference between string object and string literal 你好, 首先
我是一名优秀的程序员,十分优秀!