(一)springmvc+spring+mybatis+maven框架搭建
1.说明
工作之余,为了学习点东西。先搭建个框架。
以后要往里面加东西,比如rabbitMQ、redis、shiro等。
也是为了自己学习做一个demo吧。
2.项目文件
介绍:
application.properties文件:一些数据库连接参数,以后redis、rabbitMQ参数也加在里面。
applicationContet.xml文件: spring配置文件
log4j.properties:日志文件
message_en.properties和messages_zh_CN.properties文件:国际化文件
mybatis-config.xml文件:mybatis配置文件
spring-mvc.xml文件:mvc配置文件
aaarticlea/png;base64,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" alt="" />
3.maven的pom.xml文件
文件里引入了很多jar包,大家可以根据自己需要加自己用到的jar。
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ln</groupId>
<artifactId>ssm_project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging> <build>
<finalName>ssm_project</finalName>
<plugins>
<!-- Mybatis generator代码生成插件 配置 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${plugin.mybatis.generator}</version>
<configuration>
<configurationFile>${mybatis.generator.generatorConfig.xml}</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin> <!-- Maven插件 配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${plugin.maven-compiler}</version>
<configuration>
<source>${project.build.jdk}</source>
<target>${project.build.jdk}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${plugin.maven-surefire}</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
<skipTests>${skipTests}</skipTests>
</configuration>
</plugin> <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<path>/</path>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
<url>http://localhost:8080/</url>
<server>tomcat</server>
</configuration>
</plugin>
</plugins> <!--配置Maven 对resource文件 过滤 -->
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
</resource>
</resources>
</build> <properties>
<!-- base setting -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.locales>zh_CN</project.build.locales>
<project.build.jdk>1.7</project.build.jdk> <!-- plugin setting -->
<mybatis.generator.generatorConfig.xml>${basedir}/src/test/resources/generatorConfig.xml</mybatis.generator.generatorConfig.xml>
<mybatis.generator.generatorConfig.properties>file:///${basedir}/src/test/resources/generatorConfig.properties</mybatis.generator.generatorConfig.properties> <!-- plugin versions -->
<plugin.mybatis.generator>1.3.1</plugin.mybatis.generator>
<plugin.maven-compiler>3.1</plugin.maven-compiler>
<plugin.maven-surefire>2.18.1</plugin.maven-surefire>
<skipTests>true</skipTests> <!-- lib versions -->
<junit.version>4.12</junit.version>
<spring.version>4.3.8.RELEASE</spring.version>
<mybatis.version>3.2.2</mybatis.version>
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<mysql.connector.version>5.1.30</mysql.connector.version>
<postgresql.version>9.1-901.jdbc4</postgresql.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<httpclient.version>4.3.2</httpclient.version>
<jackson.version>1.9.13</jackson.version>
<c3p0.version>0.9.1.2</c3p0.version>
<druid.version>1.0.5</druid.version>
<tomcat.jdbc.version>7.0.53</tomcat.jdbc.version>
<jstl.version>1.2</jstl.version>
<google.collections.version>1.0</google.collections.version>
<cglib.version>3.1</cglib.version>
<shiro.version>1.2.3</shiro.version>
<commons.fileupload.version>1.3.1</commons.fileupload.version>
<commons.codec.version>1.9</commons.codec.version>
<commons.net.version>3.3</commons.net.version>
<aspectj.version>1.6.12</aspectj.version>
<netty.version>4.0.18.Final</netty.version>
<hibernate.validator.version>5.1.1.Final</hibernate.validator.version>
</properties> <dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency> <!-- springframe start -->
<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-oxm</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-jdbc</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-aop</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency> <!-- springframe end --> <!-- mybatis start-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency> <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<!--mybatis end--> <!-- mysql-connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency> <!-- DruidDataSource -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency> <!-- jackson -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency> <!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end --> <!-- servlet api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency> <!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency> <!-- start apache -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons.fileupload.version}</version>
</dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency> <dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons.codec.version}</version>
</dependency> <dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>${commons.net.version}</version>
</dependency> <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency> <!-- end apache --> <!-- google -->
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>${google.collections.version}</version>
</dependency> <!-- cglib -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>${cglib.version}</version>
</dependency> <!-- shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-quartz</artifactId>
<version>${shiro.version}</version>
</dependency> <!-- aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency> <!-- hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.validator.version}</version>
</dependency> <!-- netty -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>${netty.version}</version>
</dependency> <dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<type>jar</type>
<scope>test</scope>
</dependency> <dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency> <!-- controller的单元测试需要此库 -->
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency> <!-- 操作excel的库 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency> <!-- 读取各版本excel的兼容库 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency> <!--rabbitmq依赖 -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
<!-- 如果没有这段,上面也会将其拉进来 -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-amqp</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
<!-- 这个必要的 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.6</version>
</dependency> </dependencies>
</project>
3.application.propertes配置文件
##本地数据库
jdbc.driver=com.mysql.jdbc.Driver
#根据需要改为自己数据库
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=utf-8
#根据需要改为自己数据库用户名
jdbc.username=root
#改为自己数据库密码
jdbc.password=1234 ##DataSource Global Setting
#配置初始化大小、最小、最大
ds.initialSize=1
ds.minIdle=1ds.maxActive=20
#配置获取连接等待超时的时间
ds.maxWait=60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
ds.timeBetweenEvictionRunsMillis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
ds.minEvictableIdleTimeMillis=300000
4. applicationContext.xml文件
<?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" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 自动扫描spring注解,排除springmvc已扫描的Controller注解 -->
<context:component-scan base-package="com.ln.web">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> <!-- mybatis与spring整合 -->
<!-- 引入配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:application.properties</value>
</list>
</property>
</bean>
<!-- dataSource 配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/> <!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${ds.initialSize}"/>
<property name="minIdle" value="${ds.minIdle}"/>
<property name="maxActive" value="${ds.maxActive}"/> <!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${ds.maxWait}"/> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${ds.timeBetweenEvictionRunsMillis}"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${ds.minEvictableIdleTimeMillis}"/> <property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
</bean>
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 扫描mapper接口 com.ln.web.dao 为自己项目dao的路径 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ln.web.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
</beans>
5.springmvc.xml配置
<?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" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:cache="http://www.springframework.org/schema/cache" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!-- 自动扫描注解,只扫描的Controller注解,其它注解的扫描交给spring去处理 -->
<context:component-scan base-package="com.ln.web.controller"/> <mvc:annotation-driven></mvc:annotation-driven> <!-- 配置springmvc的视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp">
</bean>
</beans>
6.mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"classpath:schema/mybatis-3-config.dtd">
<configuration> <typeAliases>
<package name="com.ln.web.model"/>
<package name="com.ln.web.enums"/>
</typeAliases> </configuration>
7.编写测试类,测试数据库连接。
新建test
aaarticlea/png;base64,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" alt="" />
TestBase接口定义,以后所有的测试类都实现此接口即可。
package com.ln.web.controller; import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:applicationContext.xml"})
public abstract class TestBase extends AbstractJUnit4SpringContextTests{ }
UserTes测试类。
package com.ln.web.controller; import static org.junit.Assert.assertNotNull; import java.sql.Connection;
import java.util.List; import javax.annotation.Resource; import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired; import com.ln.web.model.User;
import com.ln.web.service.UserService; public class UserTest extends TestBase {
@Resource
private UserService userService;
@Autowired
private SqlSessionFactory factory; /**
* 测试数据库连接
*/
@Test
public void testConn() {
Connection con = factory.openSession().getConnection();
assertNotNull("数据库连接失败!!!", con);
} /**
* 测试
*/
@Test
public void listTest() {
List<User> list = userService.getList();
System.out.println(list.size());
} }
运行结果:
aaarticlea/png;base64,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" alt="" />
有问题自己在检查配置。
至于listTest()测试,我新建了userService、userServiceImpl.这里就不贴代码了,就是一个简单调用。
user实体类、userMapper和userMapper.xml文件都是通过Mybatic自动生成的。在pom.xml文件中加入了这个插件。
只要在配置两个文件:generatorConfig.properties和generatorConfig.xml
generatorConfig.properties文件 :
链接的数据库,用户名、密码根据自己项目改下。
包路径配置根据自己项目的包路径配置下。
# 数据库驱动jar 路径
drive.class.path=C\:\\Users\\Administrator\\.m2\\repository\\mysql\\mysql-connector-java\\5.1.30\\mysql-connector-java-5.1.30.jar # 数据库连接参数
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8
jdbc.username=simple
jdbc.password=1234 # 包路径配置
model.package=com.ln.web.model
dao.package=com.ln.web.dao
xml.mapper.package=com.ln.web.dao target.project=src/main/java
generatorConfig.xml文件:
需要生成的表名,根据自己项目改下就可以了:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <!-- 配置Run As Maven build : Goals 参数 : mybatis-generator:generate -Dmybatis.generator.overwrite=true -->
<!-- 配置 tableName,使用 Run As Maven build 生成 dao model 层 -->
<generatorConfiguration>
<!-- 配置文件路径 -->
<properties url="${mybatis.generator.generatorConfig.properties}"/> <!--数据库驱动包路径 -->
<classPathEntry location="${drive.class.path}"/> <context id="DB2Tables" targetRuntime="MyBatis3">
<!--关闭注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator> <!--数据库连接信息 -->
<jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection> <!--生成的model 包路径 -->
<javaModelGenerator targetPackage="${model.package}" targetProject="${target.project}">
<property name="enableSubPackages" value="ture"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator> <!--生成xml mapper文件 路径 -->
<sqlMapGenerator targetPackage="${xml.mapper.package}" targetProject="${target.project}">
<property name="enableSubPackages" value="ture"/>
</sqlMapGenerator> <!-- 生成的Dao接口 的包路径 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}" targetProject="${target.project}">
<property name="enableSubPackages" value="ture"/>
</javaClientGenerator> <!--对应数据库表名 -->
<table tableName="user_table"></table>
</context>
</generatorConfiguration>
8.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"> <!-- 加载spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value> classpath*:applicationContext.xml </param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- 日志 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener> <!-- 配置springmvc的dispatchServlet的处理类 -->
<servlet>
<servlet-name>dispatcher</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>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注:
我的项目创建的时候不是web项目,要把项目转成web项目生成web.xml文件:
可以参考:http://www.cnblogs.com/kaige123/p/5866446.html
9.测试、启动项目,访问:
index.jsp:
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户登录界面</title>
</head>
<body>
<form action="user/login.action" method="post" style="text-align: center; margin: 80px auto; width: 500px;">
<p>用户名:<input type="text" name="username" /></p>
<p>密码:<input type="password" name="password" /></p>
<input type="submit" value="登录"/>
</form> </body>
</html>
userController:
package com.ln.web.controller; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import com.ln.web.model.User;
import com.ln.web.service.UserService; @Controller
@RequestMapping(value="/user")
public class UserController {
@Resource
private UserService userService;
@RequestMapping(value="/login")
public ModelAndView login(User user){
ModelAndView mav=new ModelAndView();
mav.setViewName("success");
return mav;
}
}
运行结果:
aaarticlea/png;base64,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" alt="" />
aaarticlea/png;base64,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" alt="" />
(一)springmvc+spring+mybatis+maven框架搭建的更多相关文章
-
SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)
本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...
-
单工程搭建springmvc+spring+mybatis(maven,idea)
单工程搭建springmvc+spring+mybatis(maven,idea) 1.pom.xml <properties> <project.build.sourceEncod ...
-
SpringMVC+Spring+Mybatis+Maven+mysql整合
一.准备工作1.工具:jdk1.7.0_80(64)+tomcat7.0.68+myeclipse10.6+mysql-5.5.48-win322. 开发环境安装配置.Maven项目创建(参考:htt ...
-
Idea SpringMVC+Spring+MyBatis+Maven调整【转】
Idea SpringMVC+Spring+MyBatis+Maven整合 创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...
-
SpringMVC+Spring+MyBatis+Maven调整【转】
Idea SpringMVC+Spring+MyBatis+Maven整合 创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...
-
手把手教你整合 SpringMvc+Spring+MyBatis+Maven
注:该教程是参考孙宇老师的<SpringMvc+Spring+Mybatis+Maven整合视频教程1>整理的,花了我六个多小时,边复习视频边调代码边写教程,保证该教程每一步都能正确执行, ...
-
SpringMVC+Spring+mybatis+maven+搭建多模块框架前后端分离开发框架的完整demo,拿走不谢。——猿实战02
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
-
手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
-
springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来
自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用 ...
随机推荐
-
PL/SQL Developer连接本地Oracle 11g 64位数据库
转摘:http://www.cnblogs.com/ymj126/p/3712727.html 用于学习,笔记,以备后用. 1.登录PL/SQL Developer 这里省略Oracle数据库和PL/ ...
-
【leetcode】Palindrome Partitioning
Palindrome Partitioning Given a string s, partition s such that every substring of the partition is ...
-
More about Tair (NoSql)
一.前言 关于Tair的相关介绍请参照wiki(http://code.taobao.org/p/tair/wiki/index/)或者之前的博文,不再重复描述.区别于其它主流NoSql数据库,Tai ...
-
转:V$SQL,V$SQLAREA,V$SQLTEXT
V$SQL*表用于查看Shared SQL Area中SQL情况 V$SQLTEXT V$SQLTEXT用途很简单,就是用来查看完整的SQL语句,V$SQL和V$SQLAREA只能显示1000 byt ...
-
Microsoft Virtual Academy 介绍
Microsoft Virtual Academy 是微软的虚拟学院,会推出微软各个方面的一些教程 介绍一点有用的链接 http://www.microsoftvirtualacademy.com/e ...
-
关于PHP 7你必须知道的五件事
1.今年的计划表已出.PHP 7时间表RFC投票一直通过, PHP 7将在2015年10月发布.尽管有些延迟,但我们还是很高兴它在今年内发布.PHP 7详细时间表由此查看. 2.PHP 要上太空飞船了 ...
-
RT: np - new sbt project generation made simple(r)
np - new sbt project generation made simple(r) As pointed out in the comments by @0__ below, there's ...
-
java语法部分一些小问题
由于本人是个初学者希望自己的文章不会误导广大"群众",如果有错误之处还望前辈指出.谢谢! 一.键盘录入. A:导包 格式: import java.util.Scanner; 位置 ...
-
[开发技巧]&#183;Numpy中对axis的理解与应用
[开发技巧]·Numpy中对axis的理解与应用 1.问题描述 在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数. 一般的教程都是针 ...
-
分布式 基本理论 CAP 之 各分布式系统的cap支持情况
分布式系统.理论.协议 非常非常多, 它们多cap 的支持是怎么样的呢? 需要注意的是,分布式系统 为了应付各种 复杂 应用场景,支持各种各样的功能,可能有的提供了选项或某种机制, 某个时刻,支持CP ...