我不知道´;用SpringMVC捕获我的javascript文件
我用Spring2.5.6开发了一个web应用程序。但我对javascript文件有一个问题,因为我的应用程序无法捕获这些文件。我不与他们合作,我赚的更多,我也找不到解决办法 这是我的结构我不知道´;用SpringMVC捕获我的javascript文件,javascript,spring,jsp,spring-mvc,Javascript,Spring,Jsp,Spring Mvc,我用Spring2.5.6开发了一个web应用程序。但我对javascript文件有一个问题,因为我的应用程序无法捕获这些文件。我不与他们合作,我赚的更多,我也找不到解决办法 这是我的结构 src java controller test resource static js files.js WEB_INF pages spring lib web.xml 那些是我的档案
src
java
controller
test
resource
static
js
files.js
WEB_INF
pages
spring
lib
web.xml
那些是我的档案
web.xml
静态文件(css、js等)不能保留在WEB-INF文件夹中。它们应该公开提供给浏览器阅读。把它们去掉我相信您的问题在于您正在将所有请求“/”映射到dispatcher servlet。没有用于处理资源url的控制器,因此spring可能会出错,因为它无法将url映射到控制器 如果您使用的是Spring3,那么您应该将这一行添加到servlet上下文中
<mvc:resources mapping="/resources/**" location="/resources/" />
这假设您的所有资源都位于一个名为“resources”的文件夹中,该文件夹位于WebRoot文件夹中,而不是WEB-INF!如果您使用maven,那么它将是/src/main/webapp/resources。不要将资源放在WEB-INF中,这是一个对客户端隐藏内容的私有文件夹。如果要通过控制器显示JSP,则只能将其放入WEB-INF中,控制器可以查看此文件夹,但客户端/浏览器不能
但是您有一个问题,因为您使用的是不支持resources标记的旧版本spring。我认为您需要做的是覆盖资源到默认servlet的servlet映射,而不是springfront控制器
像这样的
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>spring-mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
违约
/资源/*
spring mvc调度程序
/
这假定与另一个示例的文件夹结构相同。您可以为自己的项目结构调整映射,但请记住它应该在WebRoot中,而不是WEB-INF中。如果OP使用资源处理程序,它们可以留在那里。在我将这些文件放入资源文件夹之前,这并不常见,但也不起作用。您不应该将它们放入资源中,而应该放在webapp文件夹(默认名称)中。你在用tomcat吗?尝试创建名为src/webapps的文件夹。把它们放在那里现在我把它放在src文件夹中,像这样:src---static---jsp文件中的js我放在这里:没有任何理由你使用5年前版本的spring?它不会解决这个问题,但我会认真考虑升级。斯普林斯在那段时间里改变了很多!我必须连接使用Spring2.5的应用程序。在未来,我们希望升级到所有应用程序的版本,但现在我可以连接到这个应用程序,我需要使用这个版本。我们通常使用新版本。我不确定我是否明白你所说的“连接”是什么意思,但听起来你似乎有理由。通过在线教程很容易找到旧版本。将来我们将升级该应用程序的版本,但我现在必须使用这个版本。我看了很多教程,但都不管用,我也不知道为什么!!我已经创建了一个过滤器来拦截js文件的请求,但是两者都没有。。。我还不知道该怎么做!!这件事如此简单或琐碎,让我很沮丧,给了我很多问题。谢谢你的回答,但我必须做出一些类似的回答。我使用url模式*.js将servlet映射到web.xml,应用程序可以看到这些js文件。但是我不能用它。当我在浏览器中执行应用程序时,当我去查看页面源代码时,js文件是白色的,我注意到您还配置了spring security来拦截所有URL。您是否为您的资源设置了“允许所有”规则?可能是用户未经授权查看您的JS。如果失败了,我认为您需要设置log4j来查看spring的调试输出。然后,您应该在控制台中看到一个解释,它将指出问题所在。事实上,如果你还没有这样做的话,就这么做吧。设置适当的日志通常会立即指出类似的问题。这是我没有想到的,但我已经对所有spring安全性进行了评论,并且这仍然是一样的。我继续,不想看到那些js文件。这可能是为什么过滤器不好或者我必须返回那些js文件的原因吗?请按照以下说明设置日志记录:一旦您完成了设置,错误就会出现在控制台中。我已经配置了日志,但它不会告诉我任何错误。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
...
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" >
<property name="viewClass">
<value> org.springframework.web.servlet.view.tiles2.TilesView</value>
</property>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/layouts/layouts.xml</value>
</list>
</property>
</bean>
<!-- View Resolvers -->
<!-- Resuelve la ubicion de las vistas .jsp de @Controllers en la ruta /WEB-INF/pages -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
...
</beans>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<script type="text/javascript" src="../static/js/md5.js"></script>
<script type="text/javascript">
function passwordToMD5()
{
alert("estamos en el metodo de MD5");
var aleat = document.forms[0].aleat;
var jqPassClear = document.forms[0].password;
alert(aleat.value);
alert(jqPassClear.value);
//document.forms[0].user.value = $.trim(document.forms[0].user.value);
if(jqPassClear.value != "")
{
alert("entramos en el método jqPassClear");
alert($.trim(jqPassClear.value)));
document.forms[0].password.value = hex_md5(hex_md5($.trim(jqPassClear.value)));
//document.forms[0].password.value = hex_md5(aleat.value);
//document.forms[0].password.value = hex_md5(aleat.value);
alert(document.forms[0].password.value);
}
else
{
document.forms[0].password.value = "";
}
//document.forms[0].passwordClear.value = document.forms[0].user.value;
}
</script>
</head>
<body>
<form:form modelAttribute="login" action="" method="post">
<form:errors path="*" cssClass="errorblock" element="div" />
<table>
<tr>
<td><spring:message code="message.user.userName" text="default text" /></td>
<td><form:input path="name" />
</td>
<td><form:errors path="name" cssClass="error" />
</td>
</tr>
<tr>
<td><spring:message code="message.user.password" text="default text" /></td>
<td><form:password path="password" />
</td>
<td><form:errors path="password" cssClass="error" />
</td>
</tr>
...
<tr>
<td colspan="3"><input type="submit" onclick="passwordToMD5();" /></td>
</tr>
</table>
</form:form>
</body>
</html>
public class ProvisionResourceDispatcherServlet extends HttpServlet
{
/**
*
*/
private static final long serialVersionUID = -7319714368828547681L;
@Override
public void init () throws ServletException
{
}
@Override
public void doGet (HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException
{
String servletPath = req.getServletPath (); // /resource
String url = servletPath;
String lastPath = StringUtils.substringAfterLast (servletPath, "/");
String extension = StringUtils.substringAfterLast (lastPath, ".");
try
{
RequestDispatcher dispatcher = null;
if (!StringUtils.isEmpty (extension)
&& ("js".equals (extension) || "css".equals (extension) || "jpg".equals (extension))
|| "bmp".equals (extension) || "gif".equals (extension))
{
dispatcher = req.getRequestDispatcher (url);
}
if (dispatcher != null)
{
dispatcher.include (req, rsp);
}
else
{
rsp.sendError (404);
}
}
catch (Exception e)
{
if (!rsp.isCommitted ())
{
rsp.sendError (500);
}
}
}
}
<mvc:resources mapping="/resources/**" location="/resources/" />
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>spring-mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>