Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不知道´;用SpringMVC捕获我的javascript文件_Javascript_Spring_Jsp_Spring Mvc - Fatal编程技术网

我不知道´;用SpringMVC捕获我的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 那些是我的档案

我用Spring2.5.6开发了一个web应用程序。但我对javascript文件有一个问题,因为我的应用程序无法捕获这些文件。我不与他们合作,我赚的更多,我也找不到解决办法

这是我的结构

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>