SpringMVC中处理404静态页面操作

 

 在SpringMVC中,是通过前端分发器也就是DispatchServlet来进行我们的请求拦截的,所以如果我们的请求拦截的地址如果是类似于*.do,*.action的话,那么我们的js、png、css就可以逃过,因此是可以访问到的,可是如果我们配置的拦截地址是/,那么将会拦截我们所有的请求信息。那么如何来解决这个问题呢?

 第一种方式

 在一些常见的服务器中都有一些处理静态资源的Servlet,如下所示

Tomcat, Jetty, JBoss, and GlassFish  默认 Servlet的名字 -- "default"

Google App Engine 默认 Servlet的名字 -- "_ah_default"

Resin 默认 Servlet的名字 -- "resin-file"

WebLogic 默认 Servlet的名字  -- "FileServlet"

WebSphere  默认 Servlet的名字 -- "SimpleFileServlet"

 因此我们可以在SpringMVC的dispatchServlet之前就通过服务器默认的拦截器来拦截这些URL,配置的时候,需要把这些URL-PATTERN放置到dispatchServlet之前,下面的操作需要配置到web.xml中

 

<span style="font-family:Comic Sans MS;font-size:18px;"><!-- 	激活Tomcat的defaultServlet来处理静态文件 -->
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.jpg</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.js</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.css</url-pattern>
	</servlet-mapping></span>
 

 通过这种方式就可以直接访问到我们所需要的js、css等文件了


 第二种方式

  直接使用使用<mvc:default-servlet-handler/>标签,配置到**-servlet.xml中即可,就可以访问到js、png文件了


 第三种方式

 在spring3.0.4以后版本提供了mvc:resources

  <mvc:resources mapping="/style/**" location="/style/" />

  上述的配置location,表示项目中的实际路径,而mapping表示映射的路径

  上述配置就把项目根目录下的style文件夹以及style文件夹一下的所有的子文件当作静态资源,映射到项目根目录/style文件夹下

  后面的location表示映射的路径,再举一个例子,比如项目中的js文件的实际位置是项目名/style/js/login.js,如果采用下面这种配置

  <mvc:resources mapping="/dd/**" location="/style/" />

  意思是把我们style的路径映射成为了dd,所以如果访问js文件的话需要,采用这个路径http://localhost:8080/SpringTest/dd/js/login.js

如果出现下面的错误,可能是没有配置<mvc:annotation-driven />的原因。 
报错WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC' 

 

那么问题就来了,如果新增加一个目录的话,需要多加一条配置,因此可以采用后缀过滤操作,如下所示

<mvc:resources location="/" mapping="/**/*.html" />
<mvc:resources location="/" mapping="/**/*.js" />
<mvc:resources location="/" mapping="/**/*.css" />
<mvc:resources location="/" mapping="/**/*.png" />
<mvc:resources location="/" mapping="/**/*.gif" />


 第四种方式

 如果项目中采用了拦截器的操作,那么如何在拦截器中排除我们的js文件呢?如下所示

 

在dispatchServlet.xml文件中增加
<mvc:resources location="/WEB-INF/resource/" mapping="/resource/**"/>
该方式虽然静态资源文件可以访问了,但是如果系统配置了通配符的拦截器,静态资源还是会被拦截器拦截,如下:

?
1
2
3
4
5
6
<mvc:interceptors>  
    <mvc:interceptor>  
        <mvc:mapping path="/*"/>   
    <bean  class="com.xinlong.cms.front.interceptor.CmsFrontInterceptor"></bean>  
    </mvc:interceptor>  
</mvc:interceptors>

因此需要修改,如下:

?
1
2
3
4
5
6
7
<mvc:interceptors>  
    <mvc:interceptor>  
        <mvc:mapping path="/*"/>   
        <mvc:exclude-mapping path="/resource/**"/>  
    <bean  class="com.xinlong.cms.front.interceptor.CmsFrontInterceptor"></bean>  
    </mvc:interceptor>  
</mvc:interceptors>

到此还有个问题mvc:exclude-mapping 标签不被spring-mvc-3.0.xsd支持,该配置在spring-mvc-3.2.xsd中,可以通过http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd获取,因此需要在spring-mvc-3.0.xsd文件中增加该标签,处理办法很简单,从网上下载spring-mvc-3.2.xsd,找到标签后,再找到spring.web.servlet-3.0.5.jar中的spring-mvc-3.0.xsd文件,将标签加入即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: Spring MVC 是一个基于 Java 的 Web 框架,用于快速开发 Web 应用。如果您想使用 Spring MVC 实现登录和注册功能,可以按照以下步骤操作: 1. 创建一个新的 Spring MVC 项目并配置相关的依赖。 2. 定义用户模型,并在数据库创建一个表存储用户信息。 3. 创建一个控制器处理登录和注册请求。控制器会调用与数据库交互的服务层代码完成相关操作。 4. 创建服务层代码,实现数据库操作。 5. 创建视图,提供登录和注册界面。 6. 配置 Spring MVC 的路由,使控制器和视图可以正确的对应。 7. 启动项目并测试登录和注册功能。 以上是实现登录和注册功能的大致步骤,具体的实现细节可能因项目的不同而有所差异。希望以上信息能对您有所帮助。 ### 回答2: 使用Spring MVC实现登录注册功能有以下步骤: 1. 创建Maven项目并添加所需的依赖,包括Spring Web和相关数据库驱动。 2. 创建数据库表,包括用户表和相关字段,如用户名、密码等。 3. 创建实体类User,包含用户的属性,并使用注解将其与数据库表关联。 4. 创建数据访问层接口和实现类,用于对数据库进行CRUD操作,在实现类,使用注解将查询结果映射到实体类。 5. 创建业务逻辑层接口和实现类,负责处理用户登录和注册的业务逻辑,调用数据访问层的方法进行数据库操作。 6. 创建控制器类,使用注解标记为控制器,并注入业务逻辑层的接口,处理用户的请求和返回结果,如登录请求和注册请求。 7. 在控制器类,实现登录和注册的处理方法,使用注解标记为处理请求的方法,并根据业务逻辑层返回的结果,返回对应的视图或JSON数据。 8. 创建页面模板,包括登录页面和注册页面,使用HTML、CSS和JavaScript编写,设置相应的表单和输入字段。 9. 配置Spring MVC的配置文件,包括视图解析器、处理器映射器、静态资源处理器等,以及Spring的配置文件,包括数据源配置和事务管理。 10. 启动项目并部署到服务器,访问登录和注册页面,通过输入用户名和密码进行登录和注册操作。 以上就是使用Spring MVC实现登录注册功能的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值