访问maven项目目controller访问不成功,为什么?

21:50 提问
springmvc 访问不能跳转到Controller 求大神
这是后台log:
21:50:55.307 [http-apr-8888-exec-6] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'springMVC' processing GET request for [/workload/addWorkload]
21:50:55.308 [http-apr-8888-exec-6] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /addWorkload
21:50:55.309 [http-apr-8888-exec-6] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/addWorkload]
21:50:55.310 [http-apr-8888-exec-6] WARN
o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/workload/addWorkload] in DispatcherServlet with name 'springMVC'
21:50:55.311 [http-apr-8888-exec-6] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
按赞数排序
/addWorkload 这个路径在springMVC没映射
xml 文件 中的springMVC设置有问题
把代码都放来看下
这是xml文件:
&?xml version="1.0" encoding="UTF-8"?&
xmlns="/xml/ns/javaee"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:config/xml/applicationContext.xml&/param-value&
&/context-param&
&!-- 设置字符集 --&
&filter-name&encodingFilter&/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&
&init-param&
&param-name&forceEncoding&/param-name&
&param-value&true&/param-value&
&/init-param&
&filter-mapping&
&filter-name&encodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&!-- 配置SpringMVC servlet --&
&servlet-name&springMVC&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:config/xml/springMVC-servlet.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&springMVC&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&!-- 配置监听器,用于初始化 --&
&listener&
&listener-class&org.springframework.web.util.Log4jConfigListener&/listener-class&
&/listener&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&!-- 配置静态资源
default.css.js.ico.swf.gif.jpeg.psd.jpg.png.bmp.html.crx.xpi.exe.ipa.apk.htc.woff.eot.svg*.ttf
&!-- 异常跳转页面
&error-page&
&exception-type&java.lang.Exception&/exception-type&
&location&/WEB-INF/jsp/exception.jsp&/location&
&/error-page& --&
这是springMVC-servlet.xml:
&?xml version="1.0" encoding="UTF-8"?&
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"&
&import resource="classpath:config/xml/applicationContext.xml" /&
&!-- &import resource="classpath*:applicationContext-interceptor.xml" /& --&
&!-- &mvc:default-servlet-handler/&
&mvc:resources mapping="/images/**" location="/images/"/&
&mvc:resources mapping="/js/**" location="/js/"/&
&mvc:resources mapping="/css/**" location="/css/"/&
&mvc:resources location="" mapping=""/&
&!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --&
&context:component-scan base-package="mon"/&
&mvc:annotation-driven /&
&!-- 支持spring3.0新的mvc注解 --&
&!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射
&bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&
&property name="cacheSeconds" value="0" /&
&property name="messageConverters"&
&bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"&&/bean&
&/property&
&bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/&
&property name="prefix" value="/views/"/&
&property name="suffix" value=".jsp"/&
这是applicationContext.xml:
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"&
&context:component-scan
base-package="mon"/&
&!-- 支持aop注解 --&
&aop:aspectj-autoproxy /&
&bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="locations"&
&value&classpath:config/properties/jdbc.properties&/value&
&/property&
&!-- 强制使用CGLIB代理
&aop:aspectj-autoproxy proxy-target-class="true"/&
&!-- DataSource数据源 --&
&bean id="dataSource" class="mons.dbcp.BasicDataSource"
destroy-method="close"&
&property name="driverClassName" value="${connection.driver_class}" /&
&property name="url" value="${jdbc.connection.url}" /&
&property name="username" value="${jdbc.connection.username}" /&
&property name="password" value="${jdbc.connection.password}" /&
&!-- Spring iBatis SqlMapClient --&
&bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&
&property name="configLocation"&
&value&classpath:config/xml/SqlMapConfig.xml&/value&
&/property&
&property name="dataSource" ref="dataSource" /&
&bean id="workloadDao" class="mon.dao.impl.WorkloadDao"&
&property name="sqlMapClient" ref="sqlMapClient"&&/property&
&bean id="UserDao" class="mon.dao.impl.UserDao"&
&property name="sqlMapClient" ref="sqlMapClient"&&/property&
&bean id="ProjectDao" class="mon.dao.impl.ProjectDao"&
&property name="sqlMapClient" ref="sqlMapClient"&&/property&
&!--事务管理DataSourceTransactionManager--&
&bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dataSource" /&
&!-- 配置事务特性 --&
&tx:advice id="txAdvice" transaction-manager="txManager"&
&tx:attributes&
&tx:method name="add*" propagation="REQUIRED"/&
&tx:method name="del*" propagation="REQUIRED"/&
&tx:method name="update*" propagation="REQUIRED"/&
&tx:method name="*" read-only="false"/&
&/tx:attributes&
&/tx:advice&
&!-- 配置哪些类的方法需要进行事务管理
&aop:config&
&aop:pointcut id="baseServiceMethods" expression="execution(* mon.service.*.*(..))"/&
&aop:advisor advice-ref="txAdvice" pointcut-ref="baseServiceMethods"/&
&/aop:config&
&aop:aspectj-autoproxy /&
&!-- 添加了事务的管理类
&bean id="userManager" parent="baseTransactionProxy"&
&property name="target"&
&bean class="mon.service.UserService"/&
&/property&
回复逝去的光阴:
这是addWorkload 映射那部分代码:
@Component
@Transactional
public class UserController {
@RequestMapping(value="/addWorkload")
public String addWorkload(@RequestParam("user_id") String user_id){
System.out.println("==============================");
System.out.println("user_id = " + user_id);
return "addWorkload";
回复逝去的光阴:
这是addWorkload 映射那部分代码:
@Component
@Transactional
public class UserController {
@RequestMapping(value="/addWorkload")
public String addWorkload(@RequestParam("user_id") String user_id){
System.out.println("==============================");
System.out.println("user_id = " + user_id);
return "addWorkload";
求指导!!
看一下你的项目名和发布后可以访问的名字是否一致,
操作:选择项目--&右击--&选择"properties"--&MyEclipse--&Web ,看Web Context-root对应的输入框和你的项目名是否一致,实际访问以Web Context-root对应的输入框为准。
391关注|289收录
50关注|57收录
469关注|2544收录
其他相似问题
相关参考资料使用Maven创建Web项目 - 为程序员服务
使用Maven创建Web项目
11969 阅读
本文通过Maven完成一个简单的Web项目(注意,Spring配置不是重点,看看就行)
1.从Maven模板创建Web应用程序
命令格式如下:
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
这就告诉Maven从maven-archetype-webapp 这个模板来创建
友情提示:是不是太难记了..好吧,直接输入
mvn archetype:generate
根据向导来创建把。。
比如我这样写:
& mvn archetype:generate -DgroupId=com.mkyong -DartifactId=CounterWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] Generating project in Batch mode
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.mkyong
[INFO] Parameter: packageName, Value: com.mkyong
[INFO] Parameter: package, Value: com.mkyong
[INFO] Parameter: artifactId, Value: CounterWebApp
[INFO] Parameter: basedir, Value: /Users/mkyong/Documents/workspace
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /Users/mkyong/Documents/workspace/CounterWebApp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.147s
[INFO] Finished at: Thu Dec 20 20:35:19 MYT 2012
[INFO] Final Memory: 12M/128M
[INFO] ------------------------------------------------------------------------
就创建了一个包名为com.mkyong,类名为CounterWebApp的项目了
2.Maven的Web程序目录结构
标准的web.xml部署描述文件生成了
CounterWebApp
|-----resources
|-----webapp
|-------index.jsp
|-------WEB-INF
|---------web.xml
对结构有疑问的去
生成的pom.xml文件如下
&project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.mkyong&/groupId&
&artifactId&CounterWebApp&/artifactId&
&packaging&war&/packaging&
&version&1.0-SNAPSHOT&/version&
&name&CounterWebApp Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&dependencies&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&3.8.1&/version&
&scope&test&/scope&
&/dependency&
&/dependencies&
&finalName&CounterWebApp&/finalName&
&/project&
没啥疑问的。web.xml文件则如下:
&!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"/dtd/web-app_2_3.dtd" &
&display-name&Archetype Created Web Application&/display-name&
&/web-app&
index.jsp内容是:
&h2&Hello World!&/h2&
3.转换以支持Eclipse
为了使Maven的web项目支持Eclipse,在命令行下,cd到CounterWebApp目录下,然后输入这个命令
mvn eclipse:eclipse -Dwtpversion=2.0
-Dwtpversion=2.0参数是必需的,这个参数指明了是web项目,然后导入到eclipse里就行了。从导入的工程ico可以看出是个web项目
不要迷惑,如果我们只输入
mvn eclipse:eclipse
会转换成java项目,而不是web项目的。
好了,现在项目已经准备好部署了,eclipse里的tomcat server插件装好,然后启动项目
可以通过http://localhost:8080/CounterWebApp/地址来访问
4.更新pom文件
为了使Maven项目支持Spring MVC框架,我们需要修改pom.xml文件
1.添加编译插件指定jdk6来编译
2.添加Spring框架依赖
3.升级JUnit到4.1.1
&project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.mkyong&/groupId&
&artifactId&CounterWebApp&/artifactId&
&packaging&war&/packaging&
&version&1.0-SNAPSHOT&/version&
&name&CounterWebApp Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&properties&
&spring.version&3.0.5.RELEASE&/spring.version&
&junit.version&4.11&/junit.version&
&jdk.version&1.6&/jdk.version&
&/properties&
&dependencies&
&!-- Spring 3 dependencies --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&${junit.version}&/version&
&scope&test&/scope&
&/dependency&
&/dependencies&
&finalName&CounterWebApp&/finalName&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&version&3.0&/version&
&configuration&
&source&${jdk.version}&/source&
&target&${jdk.version}&/target&
&/configuration&
&/plugins&
&/project&
5.Spring MVC 松耦合
创建Spring MVC控制器类,有两个方法,打印信息
package com.mkyong.
import org.springframework.stereotype.C
import org.springframework.ui.ModelM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
@Controller
@RequestMapping("/")
public class BaseController {
@RequestMapping(value="/welcome", method = RequestMethod.GET)
public String welcome(ModelMap model) {
model.addAttribute("message", "Maven Web Project + Spring 3 MVC - welcome()");
//Spring uses InternalResourceViewResolver and return back index.jsp
return "index";
@RequestMapping(value="/welcome/{name}", method = RequestMethod.GET)
public String welcomeName(@PathVariable String name, ModelMap model) {
model.addAttribute("message", "Maven Web Project + Spring 3 MVC - " + name);
return "index";
然后,创建Spring配置文件,定义视图解析器
&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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"&
&context:component-scan base-package="com.mkyong.controller" /&
class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&property name="prefix"&
&value&/WEB-INF/pages/&/value&
&/property&
&property name="suffix"&
&value&.jsp&/value&
&/property&
然后更新一下web.xml文件,通过Spring的监听器ContextLoaderListener把Spring框架集成进去
&web-app xmlns="/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"&
&display-name&Counter Web Application&/display-name&
&servlet-name&mvc-dispatcher&/servlet-name&
&servlet-class&
org.springframework.web.servlet.DispatcherServlet
&/servlet-class&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&mvc-dispatcher&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/mvc-dispatcher-servlet.xml&/param-value&
&/context-param&
&listener&
&listener-class&
org.springframework.web.context.ContextLoaderListener
&/listener-class&
&/listener&
&/web-app&
然移动index.jsp到WEB-INF目录里,以防用户直接访问他,同时我们编辑,增加${message}变量,也就是controller控制器传过来的值到页面
最终的页面结构是:
6.Eclipse+Tomcat
为了通过Eclipse的Tomcat插件开始/调试项目,需要再执行一次下面的命令,使得所有的依赖附加完成
mvn eclipse:eclipse -Dwtpversion=2.0
在没执行以前,项目依赖是空的
执行完以后,就都有了
重要!许多人就是没有第二次执行这个命令导致无法开始/调试,如果有问题,右击你的项目属性,看看依赖是否为空
7.Maven打包
&project ...&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.mkyong&/groupId&
&artifactId&CounterWebApp&/artifactId&
&packaging&war&/packaging&
&version&1.0-SNAPSHOT&/version&
web项目打包成war。放在target目录
进入项目目录,执行一下就可以了
mvn package
然后把target目录的CountWebApp.war文件拷贝,并部署到你的web容器里就行了
8.Demo演示
打开http://localhost:8080/CounterWebApp/welcome
我们传个参数进去
http://localhost:8080/CounterWebApp/welcome/mkyong
就可以看到效果了
9.Demo下载
原文地址:, 感谢原作者分享。
您可能感兴趣的代码fengshizty
阅读(29628)
&&&&&&&& 最近比较闲,复习搭建一下项目,这次主要使用Spring+SpringMVC+Mybatis。项目持久层使用Mybatis3,控制层使用SpringMVC4.1,使用Spring4.1管理控制器,数据库连接池使用druid数据源,该项数据库暂使用MySQL。
1、 数据库表结构以及maven项目结构
&&&&&&&& 数据表非常的简单(不是重点),如下:
&&&&&& 创建maven项目,详细见上一篇maven创建(),创建Maven Project时,将Filter选择为org.apache.maven.archetypes。填写完相关项目坐标信息后项目结构如下:
&&&& 注:若无src/main/java,src/test/java,src/test/resources时,创建这个几个Source Folder。
&2、修改pom.xml添加对应的包依赖
&&&& 这儿将全部使用的Maven依赖贴出了,对应什么作用上面都有解释,如下:
&&&& pom.xml
&project xmlns=&http://maven.apache.org/POM/4.0.0& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&&
&modelVersion&4.0.0&/modelVersion&
&groupId&org.andy.sm&/groupId&
&artifactId&springmvc_mybatis_demo&/artifactId&
&packaging&war&/packaging&
&version&0.0.1-SNAPSHOT&/version&
&name&springmvc_mybatis_demo Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&properties&
&project.build.sourceEncoding&UTF-8&/project.build.sourceEncoding&
&spring.version&4.1.4.RELEASE&/spring.version&
&jackson.version&2.5.0&/jackson.version&
&/properties&
&dependencies&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&4.12&/version&
&scope&test&/scope&
&/dependency&
&!-- spring --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-beans&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-tx&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-jdbc&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-test&/artifactId&
&version&${spring.version}&/version&
&scope&test&/scope&
&/dependency&
&!-- mybatis 包 --&
&dependency&
&groupId&org.mybatis&/groupId&
&artifactId&mybatis&/artifactId&
&version&3.2.8&/version&
&/dependency&
&!--mybatis spring 插件 --&
&dependency&
&groupId&org.mybatis&/groupId&
&artifactId&mybatis-spring&/artifactId&
&version&1.2.2&/version&
&/dependency&
&!-- mysql连接 --&
&dependency&
&groupId&mysql&/groupId&
&artifactId&mysql-connector-java&/artifactId&
&version&5.1.34&/version&
&/dependency&
&!-- 数据源 --&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&druid&/artifactId&
&version&1.0.12&/version&
&/dependency&
&dependency&
&groupId&org.aspectj&/groupId&
&artifactId&aspectjweaver&/artifactId&
&version&1.8.4&/version&
&/dependency&
&!-- log4j --&
&dependency&
&groupId&log4j&/groupId&
&artifactId&log4j&/artifactId&
&version&1.2.17&/version&
&/dependency&
&!-- servlet --&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&servlet-api&/artifactId&
&version&3.0-alpha-1&/version&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&jstl&/artifactId&
&version&1.2&/version&
&/dependency&
&!-- json --&
&dependency&
&groupId&org.codehaus.jackson&/groupId&
&artifactId&jackson-mapper-asl&/artifactId&
&version&1.9.13&/version&
&/dependency&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&fastjson&/artifactId&
&version&1.2.3&/version&
&/dependency&
&dependency&
&groupId&com.fasterxml.jackson.core&/groupId&
&artifactId&jackson-annotations&/artifactId&
&version&${jackson.version}&/version&
&/dependency&
&dependency&
&groupId&com.fasterxml.jackson.core&/groupId&
&artifactId&jackson-core&/artifactId&
&version&${jackson.version}&/version&
&/dependency&
&dependency&
&groupId&com.fasterxml.jackson.core&/groupId&
&artifactId&jackson-databind&/artifactId&
&version&${jackson.version}&/version&
&/dependency&
&!-- 文件上传 --&
&dependency&
&groupId&commons-io&/groupId&
&artifactId&commons-io&/artifactId&
&version&2.4&/version&
&/dependency&
&dependency&
&groupId&commons-fileupload&/groupId&
&artifactId&commons-fileupload&/artifactId&
&version&1.2.2&/version&
&/dependency&
&/dependencies&
&finalName&springmvc_mybatis_demo&/finalName&
&!-- Run the JUnit unit tests in an isolated classloader --&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-surefire-plugin&/artifactId&
&version&2.4.2&/version&
&configuration&
&skipTests&true&/skipTests&
&/configuration&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-war-plugin&/artifactId&
&version&2.3&/version&
&configuration&
&webXml&src/main/webapp/WEB-INF/web.xml&/webXml&
&/configuration&
&!-- generate java doc --&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-javadoc-plugin&/artifactId&
&version&2.9.1&/version&
&configuration&
&javadocDirectory&target/javadoc&/javadocDirectory&
&reportOutputDirectory&target/javadoc&/reportOutputDirectory&
&charset&UTF-8&/charset&
&encoding&UTF-8&/encoding&
&docencoding&UTF-8&/docencoding&
&show&private&/show&
&/configuration&
&!-- 部署至本机 --&
&groupId&org.codehaus.cargo&/groupId&
&artifactId&cargo-maven2-plugin&/artifactId&
&version&1.0&/version&
&configuration&
&container&
&containerId&tomcat6x&/containerId&
&home&D:\WebServer\apache-tomcat-6.0.39&/home&
&/container&
&configuration&
&type&existing&/type&
&home&D:\WebServer\apache-tomcat-6.0.39&/home&
&/configuration&
&/configuration&
&/plugins&
&/project&
3、使用Generator自动生成Mybatis相关表信息
&&&&& 自动生成表的Model,Mapping,Dao文件,先关使用见文章&
并将其导入到项目的src/main/java包中。
&&&&& 其中生成的Model中UserInfo如下:
UserInfo.java(其中List&CourseInfo& courseInfos手动添加的)
package org.andy.shop.
import java.util.L
public class UserInfo {
private List&CourseInfo& courseI
public Integer getId() {
public void setId(Integer id) {
public String getUname() {
public void setUname(String uname) {
this.uname = uname == null ? null : uname.trim();
public Integer getUnumber() {
public void setUnumber(Integer unumber) {
this.unumber =
public List&CourseInfo& getCourseInfos() {
return courseI
&& Dao包中的UserInfoMapper.java
package org.andy.shop.
import java.util.L
import org.andy.shop.model.UserI
public interface UserInfoMapper {
int deleteByPrimaryKey(Integer id);
int insert(UserInfo record);
int insertSelective(UserInfo record);
UserInfo selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(UserInfo record);
int updateByPrimaryKey(UserInfo record);
List&UserInfo& selectAll();
mapping 中的配置文件UserInfoMapper.xml
&?xml version=&1.0& encoding=&UTF-8& ?&
&!DOCTYPE mapper PUBLIC &-//mybatis.org//DTD Mapper 3.0//EN& &http://mybatis.org/dtd/mybatis-3-mapper.dtd& &
&mapper namespace=&org.andy.shop.dao.UserInfoMapper&&
&resultMap id=&BaseResultMap& type=&org.andy.shop.model.UserInfo&&
&id column=&id& property=&id& jdbcType=&INTEGER& /&
&result column=&uname& property=&uname& jdbcType=&VARCHAR& /&
&result column=&unumber& property=&unumber& jdbcType=&INTEGER& /&
&/resultMap&
&sql id=&Base_Column_List&&
id, uname, unumber
&select id=&selectByPrimaryKey& resultMap=&BaseResultMap&
parameterType=&java.lang.Integer&&
&include refid=&Base_Column_List& /&
from user_info
where id = #{id,jdbcType=INTEGER}
&delete id=&deleteByPrimaryKey& parameterType=&java.lang.Integer&&
delete from
where id = #{id,jdbcType=INTEGER}
&insert id=&insert& parameterType=&org.andy.shop.model.UserInfo&&
insert into user_info (id,
uname, unumber
values (#{id,jdbcType=INTEGER},
#{uname,jdbcType=VARCHAR},
#{unumber,jdbcType=INTEGER}
&insert id=&insertSelective& parameterType=&org.andy.shop.model.UserInfo&&
insert into user_info
&trim prefix=&(& suffix=&)& suffixOverrides=&,&&
&if test=&id != null&&
&if test=&uname != null&&
&if test=&unumber != null&&
&trim prefix=&values (& suffix=&)& suffixOverrides=&,&&
&if test=&id != null&&
#{id,jdbcType=INTEGER},
&if test=&uname != null&&
#{uname,jdbcType=VARCHAR},
&if test=&unumber != null&&
#{unumber,jdbcType=INTEGER},
&update id=&updateByPrimaryKeySelective& parameterType=&org.andy.shop.model.UserInfo&&
update user_info
&if test=&uname != null&&
uname = #{uname,jdbcType=VARCHAR},
&if test=&unumber != null&&
unumber = #{unumber,jdbcType=INTEGER},
where id = #{id,jdbcType=INTEGER}
&update id=&updateByPrimaryKey& parameterType=&org.andy.shop.model.UserInfo&&
update user_info
set uname = #{uname,jdbcType=VARCHAR},
#{unumber,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
&resultMap type=&org.andy.shop.model.UserInfo& id=&UserCourseMap&
extends=&BaseResultMap&&
&collection property=&courseInfos& javaType=&list&
ofType=&org.andy.shop.model.CourseInfo&&
&id property=&id& column=&course_id& jdbcType=&INTEGER& /&
&result property=&cname& column=&cname& jdbcType=&VARCHAR& /&
&result property=&caddress& column=&caddress& jdbcType=&VARCHAR& /&
&/collection&
&/resultMap&
&select id=&selectAll& resultMap=&UserCourseMap&&
select u.id, u.uname,
u.unumber, c.id course_id, c.cname, c.caddress from user_info u left
join course_user_info cu on u.id = cu.uid
left join course_info c on
cu.cid = c.id
4、引入Spring并配置相关属性
&&&& 在src/main/resources创建spring的配置文件,这里创建了spring.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:context=&http://www.springframework.org/schema/context&
xsi:schemaLocation=&http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd&&
&!--引入配置属性文件 --&
&context:property-placeholder location=&classpath:config.properties& /&
&!--自动扫描含有@Service将其注入为bean --&
&context:component-scan base-package=&org.andy.shop.service& /&
5、引入Mybatis并配置数据连接池等信息
&& 5.1、数据连接池druid配置信息
&& 配置连接池配置信息在config.properties中,如下:
#mysql version database druid setting
validationQuery=SELECT 1
jdbc.url=jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=12345
& 5.2、配置Mybatis相关信息
&&& 以下是mybatis的配置信息:spring-mybatis.xml(ps:名字可随便起)
&?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:aop=&http://www.springframework.org/schema/aop&
xsi:schemaLocation=&
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
&!-- 配置数据源 使用的是Druid数据源 --&
&bean name=&dataSource& class=&com.alibaba.druid.pool.DruidDataSource&
init-method=&init& destroy-method=&close&&
&property name=&url& value=&${jdbc.url}& /&
&property name=&username& value=&${jdbc.username}& /&
&property name=&password& value=&${jdbc.password}& /&
&!-- 初始化连接大小 --&
&property name=&initialSize& value=&0& /&
&!-- 连接池最大使用连接数量 --&
&property name=&maxActive& value=&20& /&
&!-- 连接池最小空闲 --&
&property name=&minIdle& value=&0& /&
&!-- 获取连接最大等待时间 --&
&property name=&maxWait& value=&60000& /&
&property name=&poolPreparedStatements& value=&true& /&
&property name=&maxPoolPreparedStatementPerConnectionSize&
value=&33& /&
&!-- 用来检测有效sql --&
&property name=&validationQuery& value=&${validationQuery}& /&
&property name=&testOnBorrow& value=&false& /&
&property name=&testOnReturn& value=&false& /&
&property name=&testWhileIdle& value=&true& /&
&!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --&
&property name=&timeBetweenEvictionRunsMillis& value=&60000& /&
&!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --&
&property name=&minEvictableIdleTimeMillis& value=&& /&
&!-- 打开removeAbandoned功能 --&
&property name=&removeAbandoned& value=&true& /&
&!-- 1800秒,也就是30分钟 --&
&property name=&removeAbandonedTimeout& value=&1800& /&
&!-- 关闭abanded连接时输出错误日志 --&
&property name=&logAbandoned& value=&true& /&
&!-- 监控数据库 --&
&property name=&filters& value=&mergeStat& /&
&!-- myBatis文件 --&
&bean id=&sqlSessionFactory& class=&org.mybatis.spring.SqlSessionFactoryBean&&
&property name=&dataSource& ref=&dataSource& /&
&!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 --&
&property name=&mapperLocations& value=&classpath:org/andy/shop/mapping/*.xml& /&
&bean class=&org.mybatis.spring.mapper.MapperScannerConfigurer&&
&property name=&basePackage& value=&org.andy.shop.dao& /&
&property name=&sqlSessionFactoryBeanName& value=&sqlSessionFactory& /&
&!-- 配置事务管理器 --&
&bean id=&transactionManager&
class=&org.springframework.jdbc.datasource.DataSourceTransactionManager&&
&property name=&dataSource& ref=&dataSource& /&
&!-- 注解方式配置事物 --&
&!-- &tx:annotation-driven transaction-manager=&transactionManager& /& --&
&!-- 拦截器方式配置事物 --&
&tx:advice id=&transactionAdvice& transaction-manager=&transactionManager&&
&tx:attributes&
&tx:method name=&insert*& propagation=&REQUIRED& /&
&tx:method name=&update*& propagation=&REQUIRED& /&
&tx:method name=&delete*& propagation=&REQUIRED& /&
&tx:method name=&get*& propagation=&SUPPORTS& read-only=&true& /&
&tx:method name=&find*& propagation=&SUPPORTS& read-only=&true& /&
&tx:method name=&select*& propagation=&SUPPORTS& read-only=&true& /&
&/tx:attributes&
&/tx:advice&
&!-- Spring aop事务管理 --&
&aop:config&
&aop:pointcut id=&transactionPointcut&
expression=&execution(* org.andy.shop.service..*Impl.*(..))& /&
&aop:advisor pointcut-ref=&transactionPointcut&
advice-ref=&transactionAdvice& /&
&/aop:config&
主要配置数据连接池,事务管理, mybatis关联映射等,事务采用aop的声明式事务。
6、引入日志
& && 在src/main/resources中添加log4j日志配置信息:
&& log4j.properties
### set log levels ###
log4j.rootLogger = INFO , C , D , E
### console ###
log4j.appender.C = org.apache.log4j.ConsoleAppender
log4j.appender.C.Target = System.out
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = [springmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
### log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ../logs/springmvc-mybatis-demo.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [springmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
### exception ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = ../logs/springmvc-mybatis-demo_error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [sspringmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
7、创建Service
&&& 在src/main/java中创建相关的org.andy.shop.service包和org.andy.shop.service.Impl包。
&&& UserService接口:
package org.andy.shop.
import java.util.L
import org.andy.shop.model.UserI
* 创建时间: 下午5:15:03
* @author andy
* @version 2.2
public interface UserService {
UserInfo getUserById(int id);
List&UserInfo& getUsers();
int insert(UserInfo userInfo);
&& UserServiceImpl实现Service:
package org.andy.shop.service.
import java.util.L
import org.andy.shop.dao.UserInfoM
import org.andy.shop.model.UserI
import org.andy.shop.service.UserS
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.S
* 创建时间: 下午5:22:59
* @author andy
* @version 2.2
@Service(&userService&)
public class UserServiceImpl implements UserService {
@Autowired
private UserInfoMapper userInfoM
public UserInfo getUserById(int id) {
return userInfoMapper.selectByPrimaryKey(id);
public List&UserInfo& getUsers() {
return userInfoMapper.selectAll();
public int insert(UserInfo userInfo) {
int result = userInfoMapper.insert(userInfo);
System.out.println(result);
8、测试Spring和Mybatis配置
&& 在src/test/java中写测试类,检测是否能够读出数据,若能读出则证明Spring+Mybatis整合成功。
TestUserService测试类:
package org.andy.shop.
import java.util.L
import org.andy.shop.model.UserI
import org.apache.log4j.L
import org.junit.T
import org.junit.runner.RunW
import org.springframework.beans.factory.annotation.A
import org.springframework.test.context.ContextC
import org.springframework.test.context.junit4.SpringJUnit4ClassR
import com.alibaba.fastjson.JSON;
* 创建时间: 下午10:45:38
* @author andy
* @version 2.2
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { &classpath:spring.xml&,
&classpath:spring-mybatis.xml& })
public class TestUserService {
private static final Logger LOGGER = Logger
.getLogger(TestUserService.class);
@Autowired
private UserService userS
public void testQueryById1() {
UserInfo userInfo = userService.getUserById(1);
(JSON.toJSON(userInfo));
public void testQueryAll() {
List&UserInfo& userInfos = userService.getUsers();
(JSON.toJSON(userInfos));
public void testInsert() {
UserInfo userInfo = new UserInfo();
userInfo.setUname(&xiaoming&);
userInfo.setUnumber(4);
int result = userService.insert(userInfo);
System.out.println(result);
若是测试成功,那证明已经成功了一半了。
9、引入SpringMVC
&& 9.1 配置SpringMVC配置信息
&&& SpringMVC的配置信息主要包括控制层Controller的bean管理,视图层和控制层配置等等,下面是spring-mvc.xml信息:
&?xml version=&1.0& encoding=&UTF-8&?&
&beans xmlns=&http://www.springframework.org/schema/beans&
xmlns:mvc=&http://www.springframework.org/schema/mvc& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xmlns:p=&http://www.springframework.org/schema/p& xmlns:context=&http://www.springframework.org/schema/context&
xsi:schemaLocation=&http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd&&
&!-- 自动扫描controller包下的所有类,如果@Controller注入为bean --&
&context:component-scan base-package=&org.andy.shop.controller& /&
&!-- 避免IE执行AJAX时,返回JSON出现下载文件 --&
&bean id=&mappingJacksonHttpMessageConverter&
class=&org.springframework.http.converter.json.MappingJackson2HttpMessageConverter&&
&property name=&supportedMediaTypes&&
&value&text/charset=UTF-8&/value&
&/property&
&!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&
class=&org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter&&
&property name=&messageConverters&&
&!-- json转换器 --&
&ref bean=&mappingJacksonHttpMessageConverter& /&
&/property&
&!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --&
class=&org.springframework.web.servlet.view.InternalResourceViewResolver&&
&property name=&viewClass&
value=&org.springframework.web.servlet.view.JstlView& /&
&property name=&prefix& value=&/WEB-INF/views& /&
&property name=&suffix& value=&.jsp& /&
&!-- 配置多文件上传 --&
&bean id=&multipartResolver&
class=&org.springframework.monsMultipartResolver&&
&property name=&defaultEncoding&&
&value&UTF-8&/value&
&/property&
&property name=&maxUploadSize&&
&!-- 上传文件大小限制为31M,31* --&
&value&&/value&
&/property&
&property name=&maxInMemorySize&&
&value&4096&/value&
&/property&
& 自动扫描org.andy.shop.controller报下还有@Controller的控制层,注入为bean。
&9.2、Web容器web.xml配置
&&& web容器配置启动加载的配置文件,设置SpringMVC拦截的请求(此处拦截.htmls结尾的url请求)
&?xml version=&1.0& encoding=&UTF-8&?&
&web-app xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xmlns=&/xml/ns/javaee& xmlns:web=&/xml/ns/javaee/web-app_2_5.xsd&
xsi:schemaLocation=&/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd&
id=&WebApp_ID& version=&2.5&&
&display-name&springmvc_mybatis_demo&/display-name&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:spring.xml,classpath:spring-mybatis.xml&/param-value&
&/context-param&
&filter-name&encodingFilter&/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&
&init-param&
&param-name&forceEncoding&/param-name&
&param-value&true&/param-value&
&/init-param&
&filter-mapping&
&filter-name&encodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&!-- 防止spring内存溢出监听器 --&
&listener&
&listener-class&org.springframework.web.util.IntrospectorCleanupListener&/listener-class&
&/listener&
&description&spring mvc servlet&/description&
&servlet-name&rest&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&init-param&
&param-name&contextConfigLocation&/param-name&
&param-value&
classpath:spring-mvc.xml
&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&rest&/servlet-name&
&url-pattern&*.htmls&/url-pattern&
&/servlet-mapping&
&!-- 配置session超时时间,单位分钟 --&
&session-config&
&session-timeout&30&/session-timeout&
&/session-config&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&/web-app&
& 9.3、Controller控制层
&&& 在org.andy.shop.controller创建控制层,如UserController.java
package org.andy.shop.
import java.util.L
import org.andy.shop.model.UserI
import org.andy.shop.service.UserS
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.C
import org.springframework.ui.ModelM
import org.springframework.web.bind.annotation.PathV
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.ResponseB
* 创建时间: 下午1:17:27
* @author andy
* @version 2.2
@Controller
@RequestMapping(&/user&)
public class UserController {
@Autowired
private UserService userS
@RequestMapping(&/showInfo/{userId}&)
public String showUserInfo(ModelMap modelMap, @PathVariable int userId){
UserInfo userInfo = userService.getUserById(userId);
modelMap.addAttribute(&userInfo&, userInfo);
return &/user/showInfo&;
@RequestMapping(&/showInfos&)
public @ResponseBody Object showUserInfos(){
List&UserInfo& userInfos = userService.getUsers();
return userI
9.4、视图层
& 在WEB-INF创建视图总目录views(为了安全起见一般都在WEB-INF下创建),创建/user/showInfo.jsp视图文件。
&%@ page language=&java& contentType=&text/ charset=UTF-8& pageEncoding=&UTF-8&%&
&!DOCTYPE html PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN& &http://www.w3.org/TR/html4/loose.dtd&&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
&title&userInfo&/title&
姓名: ${userInfo.uname}
&9.5、项目总目录结构
&& 到此为demo以及基本创建完成总目录如下:
10、项目测试
&&& 将项目编译,Maven build...输入clean compile package,部署到Tomcat服务器,启动项目。
&& 测试1:测试第一个url,& http://localhost:8080/springmvc_mybatis_demo/user/showInfo/1.htmls
&& 测试2:测试第二个json数据返回的url,& http://localhost:8080/springmvc_mybatis_demo/user/showInfos.htmls
ok,数据正常显示,SpringMVC+Mybatis搭建成功。
博客来源:
源码地址:
阅读排行榜

我要回帖

更多关于 访问maven项目 的文章

 

随机推荐