Code Bye

为什么我的项目中使用不了Spring的注解

这个是我Spring的配置

<?xml version="1.0" encoding="UTF-8"?>
<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" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.udc.control"></context:component-scan>
	<!-- 数据源配置 -->
	<bean id="propertyconfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location">
			<value>classpath:data.properties</value>
		</property>
	</bean>
	<bean id="sysDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass">
			<value>com.mysql.jdbc.Driver</value>
		</property>
		<property name="jdbcUrl">
			<value>${jdbc.url}</value>
		</property>
		<property name="user">
			<value>${jdbc.username}</value>
		</property>
		<property name="password">
			<value>${jdbc.password}</value>
		</property>
		<property name="checkoutTimeout">
			<value>6000</value>
		</property>
		<property name="maxPoolSize">
			<value>50</value>
		</property>
		<property name="minPoolSize">
			<value>20</value>
		</property>
		<property name="initialPoolSize">
			<value>20</value>
		</property>
	</bean>
	<!-- 数据源配结束-->


	<!-- 国际化配置  动态加载属性文件-->
	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basenames">
			<list>
				<value>WEB-INF/languageSource/messages</value>
			</list>
		</property>
		<property name="useCodeAsDefaultMessage" value="true" />
	</bean>
	<!-- 配置I18N拦截器 -->
	<bean id="localeChangeInterceptor"
		class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
	<!-- 定义本地化处理器 -->
	<bean id="localeResolver"
		class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>

	<bean id="urlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="interceptors" ref="localeChangeInterceptor" />
		<property name="mappings">
			<props>
				<prop key="/language.do">languageController</prop>
			</props>
		</property>
	</bean>
	<bean id="languageController" class="com.udc.sys.LanguageController"></bean>

	<!-- 国际化配置结束-->

	<bean id="resourceDao" class="com.udc.daoimpl.ResourceDaoImpl">
		<property name="dataSource" ref="sysDataSource" />
	</bean>



	<bean id="UserDao" class="com.udc.daoimpl.UserDaoImpl">
		<property name="dataSource" ref="sysDataSource" />
	</bean>

	<bean id="UserServer" class="com.udc.serverimpl.UserServerImpl">
		<property name="userDao" ref="UserDao" />
	</bean>

web.xml的配置

<context-param>
	    <param-name>contextConfigLocation</param-name>
	    <param-value>classpath:config/applicationContext.xml </param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>


	<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:config/spring_mvc.xml</param-value>
		</init-param>
	</servlet>      
	<servlet-mapping>         
		<servlet-name>dispatcherServlet</servlet-name>         
		<url-pattern>*.do</url-pattern> 
	</servlet-mapping>

这个是我的control层

这是页面提交

在我提交的时候总是报
 No mapping found for HTTP request with URI [/bds-2.1/movie/test.do] in DispatcherServlet with name “”dispatcherServlet””
这个错误,可恶的No mapping found for HTTP request with URI 


10分
struts1遗留下来的.do用法  springmvc还在为此买单
<servlet-mapping>         
        <servlet-name>dispatcherServlet</servlet-name>         
        <url-pattern>/</url-pattern> 
    </servlet-mapping>

url  /movie/test


10分
控制层方法上的@RequestMapping value值改为 /test.do

10分
确实,你对Spring MVC的跳转完全不了解~
请求首先要通过DispatcherServlet转发,你Dispatcher只拦截*.do
那根本无法转发到你的Controller里
<servlet-mapping>         
        <servlet-name>dispatcherServlet</servlet-name>         
        <url-pattern>/</url-pattern> 
</servlet-mapping>
引用 3 楼 u012345283 的回复:

确实,你对Spring MVC的跳转完全不了解~
请求首先要通过DispatcherServlet转发,你Dispatcher只拦截*.do
那根本无法转发到你的Controller里

<servlet-mapping>         
        <servlet-name>dispatcherServlet</servlet-name>         
        <url-pattern>/</url-pattern> 
</servlet-mapping>

用/拦截的话,就将所有的请求都给拦截下来了,因为我这个项目中还使用了dwr所有不能那么写

引用 2 楼 whos2002110 的回复:

控制层方法上的@RequestMapping value值改为 /test.do

你说的这个方法我试过,不行。这个的主要的问题在于,我配置的注解没有用一样。

引用 1 楼 cbxjj 的回复:

struts1遗留下来的.do用法  springmvc还在为此买单
<servlet-mapping>         
        <servlet-name>dispatcherServlet</servlet-name>         
        <url-pattern>/</url-pattern> 
    </servlet-mapping>

url  /movie/test

我单独写了个demo,里面的jar,配置什么的都是跟这个一样的,他可以使用,但是放到项目中就不行,不知道为什么,纠结死我了


10分
引用 4 楼 zjg1995 的回复:
Quote: 引用 3 楼 u012345283 的回复:

确实,你对Spring MVC的跳转完全不了解~
请求首先要通过DispatcherServlet转发,你Dispatcher只拦截*.do
那根本无法转发到你的Controller里

<servlet-mapping>         
        <servlet-name>dispatcherServlet</servlet-name>         
        <url-pattern>/</url-pattern> 
</servlet-mapping>

用/拦截的话,就将所有的请求都给拦截下来了,因为我这个项目中还使用了dwr所有不能那么写

dwr没用过。。。
但是你不能dispatcherServlet拦截到了之后转发给dwr吗?

在你的Controller中加个默认的构造方法, 在里面打一个断点, 启动的时候如果扫描到@Controller 那么就会到你的断点那里, 这也就验证的你的注解是否生效。   如果没有断点到,看看你的扫描的配置包路径是否正确
引用 8 楼 whos2002110 的回复:

在你的Controller中加个默认的构造方法, 在里面打一个断点, 启动的时候如果扫描到@Controller 那么就会到你的断点那里, 这也就验证的你的注解是否生效。   如果没有断点到,看看你的扫描的配置包路径是否正确

我试试。

引用 7 楼 u012345283 的回复:
Quote: 引用 4 楼 zjg1995 的回复:
Quote: 引用 3 楼 u012345283 的回复:

确实,你对Spring MVC的跳转完全不了解~
请求首先要通过DispatcherServlet转发,你Dispatcher只拦截*.do
那根本无法转发到你的Controller里

<servlet-mapping>         
        <servlet-name>dispatcherServlet</servlet-name>         
        <url-pattern>/</url-pattern> 
</servlet-mapping>

用/拦截的话,就将所有的请求都给拦截下来了,因为我这个项目中还使用了dwr所有不能那么写

dwr没用过。。。
但是你不能dispatcherServlet拦截到了之后转发给dwr吗?

没有这么写过,不知道行不行

引用 10 楼 zjg1995 的回复:
Quote: 引用 7 楼 u012345283 的回复:
Quote: 引用 4 楼 zjg1995 的回复:
Quote: 引用 3 楼 u012345283 的回复:

确实,你对Spring MVC的跳转完全不了解~
请求首先要通过DispatcherServlet转发,你Dispatcher只拦截*.do
那根本无法转发到你的Controller里

<servlet-mapping>         
        <servlet-name>dispatcherServlet</servlet-name>         
        <url-pattern>/</url-pattern> 
</servlet-mapping>

用/拦截的话,就将所有的请求都给拦截下来了,因为我这个项目中还使用了dwr所有不能那么写

dwr没用过。。。
但是你不能dispatcherServlet拦截到了之后转发给dwr吗?

没有这么写过,不知道行不行

试试才知道~我觉得应该没问题

我是试一下,额外问个问题,Spring+struts2整合的时候,Spring注入的对象总是报空是为什么

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么我的项目中使用不了Spring的注解