建立SpringMvc工程

更新时间:2023-09-14 06:13:01 阅读量: 初中教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

建立SpringMvc工程

1. 配置generatorConfig.xml

自动生成的配置文件,在进行配置中只需要将“数据库驱动包”的位置、“数据库连接”以及表的名称修改即可,具体操作如下:

将location的路径改为相应的数据库驱动报的位置。

connectionURL=\password=\

在这里将连接数据库的语句以及用户名称和密码写好,由于我使用SQLServer连接数据库,所以连接语句如上。 另外需要注意的是:在使用SQLServer连接数据库的过程中,必须使用SQLServer身份认证。

enableCountByExample=\enableSelectByExample=\

以上语句只需要将数据库的名称和表名称修改成你所连接的数据库名称和表名。 需要注意的是:SQLServer建立表的数据库名称为dbo。 将所有代码修改完成之后,右击“generatorConfig”,点击“Generate Mybatis/iBATIS Atifacts”就会生成dao,model

通过数据库generator Mybatis,Mybatis主要是生成映射文件。通过修改generatorConfig.xml配置文件来生成Mybatis。生成的文件在src文件夹下面的resource下。 指定SQLServer数据库连接的驱动包,修改驱动包的路径。

修改数据库连接的URL和用户名、密码。这样生成的工具才能访问到你的数据库,先通过访问你的数据库,然后通过表结构来生成类文件或者映射文件。 生成模型文件的包名和位置,将一个个的表映射成模型, 生成映射文件的包名和位置,

Dao就是mapper,生成映射文件就会生成dao文件,生成dao的包名和位置。

我们在配置table的时候,将哪些表生成类文件或者映射文件,需要映射几个表就写几个,第一个参数是schema,第二个参数是table name,后面的代码是为了解决生成乱码的, 注:java类名称第一个字母要大写。

Dao下面生成的都是映射文件Mapper,有几个表生成几个映射文件,生成的Mapper文件思路就很清晰,在生成的Mapper配置文件

2. 加入Spring和Mybatis的jar包

因为是Sping、Mvc以及Mybatis整合,所以需要将对应的jar包加入进去,要不然项目都起

不来,不添加jar包项目都起不来。

在建立项目的时候要New一个maven project,建立Spring Mvc就是建立一个web项目, 按照习惯你可以在新建一个项目的时候首先修改编码为UTF-8,在属性properties下可以修改,

新建立的maven项目有一个固定的目录,src/main/java,src/test/java以及src/main/resources其中在src/main/java中主要存放java的文件,src/test/java主要存放编译的文件,src/main/resources中主要存放配置文件。

2.1配置pom.xml

Pom文件主要用来添加依赖jar包,在这里你需要将spring 在添加jar包的时候,如果运行不成功,出现Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0

错误,说明Maven can't find this artifact in any of the configured,这个时候需要将所需要jar包通过下面的

maven命令将jar包安装到自己的私服上。 Maven 安装 JAR 包的命令是:

mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar

我的是:mvn install:install-file -Dfile=D:\\yingyongchengxu\\sqljdbc4.jar

-DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar 那么我在 cmd 中敲入的命令就应该是:

mvn install:install-file -Dfile= D:\\yingyongchengxu\\sqljdbc4.jar

-DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar 回车,显示安装成功:

然后在pom.xml配置文件中引用sqljdbc依赖,

com.microsoft.sqlserver sqljdbc4 4.0

运行之后,就会发现pom.xml将sqljdbc引用进来了,同时在Java Resources/Maven Dependencies中就会看到相应的依赖包。

将所需要的所有jar包引用进去就完成了pom文件俄配置。

由于是maven项目,所以在引入jar包就比较方便,打开pom.xml配置文件就可以将所需要的jar包引入进去,用什么jar包引入什么,其它的依赖包自动加入。 打开pom.xml可以看到现有的jar包依赖,如果我们在引入jar包的时候记不住groupId以及version的时候,打开search.maven.org网址,然后将所需要的spring-core.jar包search出来后,选择相应的依赖jar包的xml,将其复制到pom.xml就会引进jar包。如果添加进去的jar包也有依赖,它会自动将其依赖jar包添加进去。

Pom.xml需要添加spring-core.jar、mybatis.jar、因为我们需要将Spring和Mybatis进行整合,所以我们需要引入一个mybatis-spring.jar包来整合,mybatis是一个操作数据库的东西,那我们需要一个连接数据库驱动包,由于我连接的数据库是SQLServer,所以我找的是SQLServer的驱动包,另外我们将Spring与Mybatis整合到一起需要测试一下,我们需要一个测试包

junit.jar包,这个包只有在测试的时候使用,在发布的时候不会使用,我们给这个包添加一个自作用域,test这样的话在测试的时候才会使用这个包。

3. Spring配置文件

3.1Spring.xml文件配置

既然是Spring项目,所以肯定有Spring的配置文件,Spring配置文件(需要自己写)的东西很少,就是一个,里面写了一个引入属性文件,

Spring这段代码是自动扫描,扫描com.test包下的service包,可以将你在service包下建立的类,如果有什么注解,service那个注解,那么spring就会将你的那个类映射成一个bean,如果你不配置这个个自动扫描的话,那你service如果很多,你就需要写很多的bean,有几个service写几个bean,而且每次都需要修改文件。

今天碰到一个奇怪的问题,spring在初始化xml配置文件的时候报错: Cannot find the declaration of element 'beans'

spring配置文件原来是这样写的: Xml代码 1. 2. 3.

由于应用会有无互联网的环境下运行,同事将命名空间的引用改成了 org/springframework/beans/factory/xml/spring-beans-2.0.xsd 但不知道为什么在我本地上运行却不行

最后google了好几次才找到原因

Java代码 1. 2. 3.

需要增加“classpath:/”

Spring配置文件xsi:schemaLocation无法解析导致启动失败的解决方案

今天向服务器部署一个console java app之后,启动时发现程序出现异常: Exception in thread ?main?

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 10 in XML document from class path resource [app-config.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element ‘beans’.

然后去看看app-config.xml里的schema声明部分,是这样写的:

xmlns:context=?http://www.springframework.org/schema/context? 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? > 很明显,有关’beans’的声明都放在

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd里面了。可能是网络原因,访问不倒导致解析app-config.xml失败,致使程序抛出异常。 打开spring-beans-3.0.1.RELEASE.jar一看,那个xsd文件就在

org.springframework.beans.factory.xml包下面,这下子好办了,把xsd文件的引用全改为本地的就行了:

xmlns:context=?http://www.springframework.org/schema/context? xsi:schemaLocation=?http://www.springframework.org/schema/beans classpath:/org/springframework/beans/factory/xml/spring-beans-3.0.xsd http://www.springframework.org/schema/context

classpath:/org/springframework/context/config/spring-context-3.0.xsd? >

3.2Spring-Mybatis.xml配置文件

Spring要和Mybatis进行整合,所以需要一个Spring-mybatis.xml配置文件,当然这个名字不是固定你可以自由取,mybatis是处理数据库的,所以首先要整合数据源, 如果在tomcat配置了数据源,那么使用就JNDI方式配置数据源,如果没有用在tomcat配置数据源,那么就得自己在配置文件中自己写一个配置数据源的文件.

在配置映射文件以及dao文件,不需要一个个配置,用包扫描的方式来配置。

在该配置文件,我们需要配置数据源,Mybatis,事务管理器,拦截方式,注解方式,配置druid这些文件。

在配置Spring-mybatis.xml时出现: cvc-elt.1: Cannot find the declaration of element 'beans'错误。 出现此问题 是spring的jar包与applicationContext.xml中xsd的 版本不同 造成的。 版本不同在联网的情况下不会出现此异常,但当网络断开或者使用内部网络时就会出现此异常。

今天在写spring aop示例的时候,在spring.xml文件中添加spring aop的schema后出现红叉,spring配置文件如下:

[html] view plaincopy

1. 2. 3. 13. 14.

提示说:cvc-elt.1: Cannot find the declaration of element 'beans',

从网上搜了一些,有的说是因为网络原因访问不到xsd文件,因为访问不到网络上的xsd文件,我们可以访问本地的啊,在引入的spring的包中spring-beans-3.2.2.RELEASE.jar中有spring-beans-3.0.xsd文件,其他的xsd文件也都能在相应的包中找到,这样就好说了,把xsd文件的引用全部改为本地文件:

[html] view plaincopy

1. 2. 3. 4. 5. 6. 7. 8. 9. 14. 15.

整合完Spring与Mybatis之后我们先测试一下,我们首先写service接口interface,命名为User,假设我们来查询一个用户,查询用户我们肯定返回一个User,然后写入 Public User getUserById(String idf);

同时我们建立service的实现类UserServiceimpl ,建立UserServiceimpl的时候实现User接口,new—class—interface的Add--找到对应接口。

实现之后,类的代码变成: package com.test.service.impl; import com.test.service.User;

public class UserServiceimpl implements User { public User getUserById(String idf) { // TODO Auto-generated method stub return null; } }

我们这个service是要处理一些业务数据后处理数据库的,在mybatis中处理数据库要调用dao,dao就是mapper,dao只写interface不写实现类,

定义一个usermapper的属性,出现错误提醒,这个时候要将对应的包import进来。

要使用mapper那么就需要Spring注入,这个时候我们需要genertor getters and setters,点击source/Genertor Getters and Setters或者按快捷键Alt+Shift+S就会出现Genertor Getters and Setters选项。

生成如下代码:

public void setUsermapper(UserMapper usermapper) { this.usermapper = usermapper; } 我们如何将usermapper注入到service里呢?

遇到这种错误Autowired cannot be resolved to a type

3.3Junit测试Spring和Mybatis是否整合成功

在src/test/java下建立一个TestMybatis的class来做一个junit的测试,测试Spring和Mybatis是否整合成功,我们要通过junit测试,其实Spring也提供了一个测试的jar包,通过这个jar包可以很方便的测试Spring,

通过new一个classpath来获得一个Spring的上下文,在这里面填写一个Spring的配置文件,因为我把Spring的配置文件分为Spring.xml和Spring-mybatis.xml两个配置文件, 老式的测试方法写法如下: @test

Public void test1(){ ApplicationContext

ac=new ClasspathXmlApplicationContext(new String[]{“Spring.xml”,”Spring-mybatis”}) UserService userService=(UserServiceI)ac.getBean(“userService”); User u=userService.getUserById(“”); System.out.println(u); }

这个时候运行JUnit出现错误,需要将aspectj.jar这个jar包添加进去,有一个测试写一个,

有几个得写几个,每个都需要获得Spring的上下文,那么速度很慢,因为Spring在初始化的过程中很慢,为了改进这种办法,在JUnit配置文件中有一个@Before这样一个注解,这个before类是在所有的测试方法执行之前执行的一个类,那么就可以将所有初始化的东西放到前面,这样执行的时候只会执行一次 @Before

public void before(){ }

错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of autowired dependencies failed; nested exception is

org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.test.service.impl.UserServiceImpl.setUserMapper(com.test.dao.inter.UserMapper); 说明我们的注解驱动没有扫描进去,那么我们在Spring.xml文件中更改一下扫描路径,可能出现问题,我的问题是:

继续运行,出现错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name

'sqlSessionFactory' defined in class path resource [spring-mybatis.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file

3.4SpringMVC配置

测试Spring与Mybatis整合成功之后,导入SpringMvc的jar包,也就是Spring-webmvc.jar包,导入这个jar包之后,肯定有一个spring-mvc的配置文件。

在com.test.controller建立的类,只要再最上面加上controller注解,就可以将该类加入到spring-mvc的上下文中,并知道下面的类为控制器类。

在controller类中光右controller注解是不够的,我们还必须要知道url,controller访问需要加入@RequestMapping(“”);这个东西就是一个访问地址的

问题集锦:

1,遇到The method of type must override a superclass method,提示的是实现类必须实现接口的方法。实现类里面使用了 @Override在1.5下要使用@Override 这个annotation 必须保证 被标注方法来源于class 而不是interface 解决方法:

将项目的jdk从1.5改为1.6及以上

import com.deliver.tools.internal.ws.processor.model.Response; ( package com.deliver.company.filter;)

本文来源:https://www.bwwdw.com/article/e3dh.html

Top