SpringMVC 请求总是返回404

CoderForHope 2016-05-10 10:03:56
web.xml配置:
<?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_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>StroeManagerSystemNew</display-name>

<!-- 欢迎页面 -->
<!-- ====================================== -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- 处理字符编码,统一为UTF-8 -->
<!-- ====================================== -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>

<!-- Spring MVC配置 -->
<!-- ====================================== -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下 -->
<!-- 名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</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>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.json</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.ico</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.doc</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.xls</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.docx</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.xlsx</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.txt</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.swf</url-pattern>
</servlet-mapping>

<!-- Spring配置 只使用spring-servlet一个配置文件时,不用listener -->
<!-- ====================================== -->
<!-- <listener> -->
<!-- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> -->
<!-- </listener> -->

<!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 -->
<!-- ====================================== -->
<!-- <context-param> -->
<!-- <param-name>contextConfigLocation</param-name> -->
<!-- <param-value>classpath:applicationContext.xml</param-value> -->
<!-- </context-param> -->

</web-app>




现在无论是访问http://localhost:8080/StoreManagerSystemNew/login3还是访问http://localhost:8080/StoreManagerSystemNew/返回的都是404。按理说在启动日志中已经映射了login3这个地址,怎么不能返回,而且在spring-servlet.xml中我配置了
<!-- 映射“/”的url -->
<!-- ====================================== -->
<mvc:view-controller path="/" view-name="forward:/index"/>
...全文
592 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
get请求是可以的是不,springMVCcontroller的请求默认是get,加上这类注解指明controller的请求方式即可
@RequestMapping(value="getSecCode",method={RequestMethod.POST,RequestMethod.GET})
CoderForHope 2016-05-10
  • 打赏
  • 举报
回复
spring-servlet.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    http://www.springframework.org/schema/tx   
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd  
    http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">


	<!-- 配置databaseSource -->
	<!-- ====================================== -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://localhost:3306/storeManager"></property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
		<!-- <property name="initialSize" value="3" /> -->
		<!-- 连接池的最大值 -->
		<property name="maxActive" value="500" />
		<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
		<property name="maxIdle" value="4" />
		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
		<property name="minIdle" value="2" />
	</bean>

	<!-- 配置sessionFactory,用于获取session -->
	<!-- ====================================== -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="mappingResources">
			<list>
				
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQL5Dialect
				</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
	</bean>

	<!-- 配置事务管理器 -->
	<!-- ====================================== -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
		<property name="rollbackOnCommitFailure" value="true" />
	</bean>
	<tx:annotation-driven transaction-manager="transactionManager"
		proxy-target-class="true" />

	<!-- 配置操作数据的Bean -->
	<!-- ====================================== -->
	<!-- <bean id="userImpl" class="com.kunluntech.store.impl.UserImpl"> -->
		<!-- <property name="sessionFactory" ref="sessionFactory"></property> -->
	<!-- </bean> -->
	<!-- 配置JavaBean -->
	<!-- ====================================== -->
	<!-- <bean id="user" class="com.kunluntech.store.bean.User"></bean> -->

	<!-- 配置获取spring容器中Bean的工具Bean -->
	<!-- 由于持有ApplicationContext, -->
	<!-- 可以使用SpringContextHolder.getBean('xx')的静态方法得到spring bean对象 -->
	<!-- ====================================== -->
	<bean
		class="com.kl.napchen.storeManagerSystem.contextHolder.SpringContextHolder"
		lazy-init="false" />

	<!-- 隐式地向 Spring容器注册这4个BeanPostProcessor -->
	<!-- AutowiredAnnotationBeanPostProcessor、 -->
	<!-- RequiredAnnotationBeanPostProcessor、 -->
	<!-- CommonAnnotationBeanPostProcessor、 -->
	<!-- PersistenceAnnotationBeanPostProcessor -->
	<!-- ====================================== -->
	<!-- <context:annotation-config /> -->

	<!-- 设置使用注解的类所在的jar包 ,使用这种即可省去上面的声明 -->
	<!-- ====================================== -->
	<context:component-scan base-package="com.*">
		<!-- <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> -->
	</context:component-scan>

	<!-- 默认的注解映射的支持 -->
	<!-- 采用这下面种方式将自动装配DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
	<!-- 采用这下面种方式将无法在 DefaultAnnotationHandlerMapping配置拦截器 -->
	<!-- ====================================== -->
	<mvc:annotation-driven />

	<!-- 配置 DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
	<!-- ====================================== -->
	<!-- <bean
		class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
		配置拦截器
		<property name="interceptors">
		<list>
		<bean class="com/kl/napchen/storeManagerSystem/interceptor/MyInterceptor"></bean>
		</list>
		</property>
	</bean> -->
	<!-- <bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
	</bean> -->
	
	<!-- 映射“/”的url -->
	<!-- ====================================== -->
	<mvc:view-controller path="/" view-name="forward:/index"/>
	
	<!-- ViewResolver -->
	<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
	<!-- ====================================== -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

	<!-- 自定义拦截器 (近似-总拦截器) -->
	<!-- ====================================== -->
	<!-- <mvc:interceptors>
		<bean class="com.kl.napchen.storeManagerSystem.interceptor.MyInterceptor" />
	</mvc:interceptors> -->

	<!-- 总错误处理 -->
	<!-- ====================================== -->
	<bean id="exceptionResolver"
		class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<!-- 配置不同类别的错误对应的view和状态码 -->
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.Exception">errors/error</prop>
				<prop key="java.lang.Throwable">errors/error</prop>
				<!-- 上传文件大于最大尺寸后转向出错页面   -->
				<!-- ====================================== -->
				<prop
					key="org.springframework.web.multipart.MaxUploadSizeExceededException">errors/uploadError
				</prop>
			</props>
		</property>
		<property name="statusCodes">
			<props>
				<prop key="errors/error">500</prop>
				<prop key="errors/404">404</prop>
			</props>
		</property>
		<!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 -->
		<property name="warnLogCategory">
			<value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver
			</value>
		</property>
		<!-- 默认错误页面,当找不到上面mappings中指定的异常对应视图时,使用本默认配置 -->
		<property name="defaultErrorView" value="errors/error"></property>
		<!-- 默认HTTP状态码 -->
		<property name="defaultStatusCode" value="500"></property>
	</bean>

	<!-- 对静态资源文件的访问 方案一 (二选一) -->
	<!-- 使用"*.do"配置DispatcherServlet时不存在静态资源访问问题 ,拦截器将不会拦截静态资源的URL -->
	<!-- 使用"/"配置DispatcherServlet时存在静态资源访问问题,采用以下两种方案解决 -->
	<!-- ====================================== -->
	<!-- <mvc:default-servlet-handler /> -->

	<!-- 对静态资源文件的访问 方案二 (二选一) -->
	<!-- ====================================== -->
	<!-- 静态资源映射 -->
	<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
	<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
	<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
	<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
	<mvc:resources mapping="images/**" location="/WEB-INF/images/" />


</beans>
CoderForHope 2016-05-10
  • 打赏
  • 举报
回复
MyController代码(copy网上的): package com.kl.napchen.storeManagerSystem.controller; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; @Controller public class MyController { // 请求url地址映射,类似Struts的action-mapping @RequestMapping("/login") public String testLogin(@RequestParam(value = "username") String username, String password, HttpServletRequest request) { // @RequestParam是指请求url地址映射中必须含有的参数(除非属性required=false) // @RequestParam可简写为:@RequestParam("username") if (!"admin".equals(username) || !"admin".equals(password)) { return "loginError"; // 跳转页面路径(默认为转发),该路径不需要包含spring-servlet配置文件中配置的前缀和后缀 } return "index"; } @RequestMapping("/login2") public ModelAndView testLogin2(String username, String password, int age) { // request和response不必非要出现在方法中,如果用不上的话可以去掉 // 参数的名称是与页面控件的name相匹配,参数类型会自动被转换 if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { return new ModelAndView("loginError"); // 手动实例化ModelAndView完成跳转页面(转发),效果等同于上面的方法返回字符串 } return new ModelAndView(new RedirectView("index")); // 采用重定向方式跳转页面 // 重定向还有一种简单写法 // return new ModelAndView("redirect:../index.jsp"); } }
CoderForHope 2016-05-10
  • 打赏
  • 举报
回复
UserController代码:
package com.kl.napchen.storeManagerSystem.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UserController {
	// 请求url地址映射,类似Struts的action-mapping
	@RequestMapping("/login3")
	public String testLogin() {
		System.out.println("login3");
		return "index";
	}
}
街头小贩 2016-05-10
  • 打赏
  • 举报
回复

@Controller
@RequestMapping({ "/StoreManagerSystemNew" })
public class MyController {
}

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧