Uncaught ReferenceError: $ is not defined
at hellow.js:1
页面提示jquery没有定义,其实就是jquery没有正确引入,网上看了一些资料,有说web.xml配置拦截静态请求的,有说spring-xml配置的,但都没有找到我的错误。
在这里说一下中级解决方案:
检查以下文件,1.web.xml是否把所有静态资源都拦截了,
2.spring-xml文件配置是否正确;
3.jsp页面引入的jquery路径是否正确;
其实我的问题是犯了个低级错误,jquery的引入顺序应该在对应js之上;
下面给出正确的三个地方正确代码:
1.web.xml设置为只拦截.do的形式
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>ttmTestJiang</display-name>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 欢迎页面
<welcome-file-list>
<welcome-file>default.html</welcome-file>
</welcome-file-list> -->
</web-app>
2.spring-mvc-xml文件:
<context:component-scan base-package="cn.jiang.test" />
<!-- <mvc:default-servlet-handler />
<mvc:resources mapping="/res/**" location="/WEB-INF/res/" /> -->
<!-- spring mvc 注解及类型转换 -->
<mvc:annotation-driven conversion-service="conversionService" />
<!-- 通过ConversionService进行类型转换 -->
<!-- 要使用spring mvc中的@Controller注解,就必须要配置<mvc:annotation-driven />,
否则org.springframework.web.servlet.DispatcherServlet无法找到控制器并把请求分发到控制器。
-->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
</bean>
如果是配置了shiro安全框架:则:spring-shiro-xml文件应对静态资源放行:
<!-- shiro工厂bean配置 -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!-- shiro的核心安全接口 -->
<property name="securityManager" ref="securityManager"/>
<!-- 要求登录时的连接 -->
<property name="loginUrl" value="/loginUI.do"></property>
<!-- 登录成功后要跳转的连接(此处已经在登录中处理了) -->
<!-- <property name="successUrl" value="/index.jsp"></property> -->
<!-- 访问未对其授权的资源时,要跳转的连接
<property name="unauthorizedUrl" value="/default.html"></property>-->
<!-- shiro连接约束配置 -->
<property name="filterChainDefinitions">
<value>
<!-- 对静态资源设置允许匿名访问 -->
/images/** = anon
/js/** = anon
/css/** = anon
/static/** = anon
/bootstrap/** = anon
/jquery/** = anon
<!-- 可匿名访问路径,例如:验证码、登录连接、退出连接等 -->
/login.do = anon
<!-- 退出 -->
/logout.do = logout <!-- 会调用Subject的logout方法,此方法会将session清空 -->
<!-- 剩余其他路径,必须认证通过才可以访问 -->
/** = authc
</value>
</property>
</bean>
<!-- 配置shiro安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="shiroUserRealm"></property>
</bean>
<!-- 自定义Realm -->
<bean id="shiroUserRealm" class="cn.tedu.ttms.common.service.impl.ShiroUserRealm">
<!-- 配置凭证算法匹配器 -->
<property name="credentialsMatcher">
<bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
<property name="hashAlgorithmName" value="MD5"/>
<!-- <property name="hashIterations" value="1024"/> -->
</bean>
</property>
</bean>
<!--Shiro生命周期处理器-->
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
</beans>
3.jsp路径引入:注意,jquery顺序:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="basePath" value="${pageContext.request.contextPath}"></c:set>
<script type="text/javascript" src="${basePath}/jquery/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="${basePath}/testJs/hellow.js"></script>