SSM框架搭建(Spring+SpringMVC+MyBatis)与easyui集成并实现增删改查实现

来源:互联网 发布:psvita 电池 淘宝 编辑:程序博客网 时间:2024/04/30 08:46

spring相关概念及SSM框架在本文当中就不多述了,直接上干货!

一、用myEclipse初始化Web项目

      新建一个web project:

二、创建包

controller       //控制类

service//服务接口
service.impl//服务实现类
dao  //data access object(接口)
dao.impl  //实现类

domain  //实体类

mappers //mybatis的配置映射文件
        util            //工具类

        

三、是maven方式引入类库

3.1启动tomcat服务

3.2web项目添加maven支持(引入maven私服库)

   web项目转化为maven项目:

3.3引入依赖

spring

mybatis
spring mvc
c3p0类库
MySQL

.......

3.4主要是编写pom.xml文件

[html] view plain copy

 

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/xsd/maven-4.0.0.xsd">  

2.      <modelVersion>4.0.0</modelVersion>  

3.      <groupId>com.liuhai</groupId>  

4.      <artifactId>eshopSSM</artifactId>  

5.      <version>0.0.1-SNAPSHOT</version>  

6.      <packaging>war</packaging>  

7.      <properties>  

8.        <log4j.version>1.2.17</log4j.version>  

9.        <slf4j.version>1.7.7</slf4j.version>    

10.     </properties>  

11.     <build>  

12.       <sourceDirectory>src</sourceDirectory>  

13.       <resources>  

14.         <resource>  

15.           <directory>src</directory>  

16.           <excludes>  

17.             <exclude>**/*.java</exclude>  

18.           </excludes>  

19.         </resource>  

20.       </resources>  

21.       <plugins>  

22.         <plugin>  

23.           <artifactId>maven-compiler-plugin</artifactId>  

24.           <version>3.1</version>  

25.           <configuration>  

26.             <source>1.7</source>  

27.             <target>1.7</target>  

28.           </configuration>  

29.         </plugin>  

30.         <plugin>  

31.           <artifactId>maven-war-plugin</artifactId>  

32.           <version>2.3</version>  

33.           <configuration>  

34.             <warSourceDirectory>WebRoot</warSourceDirectory>  

35.             <failOnMissingWebXml>false</failOnMissingWebXml>  

36.             <version>3.0</version>  

37.           </configuration>  

38.         </plugin>  

39.       </plugins>  

40.     </build>  

41.     <dependencies>  

42.       <!-- webmvc -->  

43.           <dependency>  

44.               <groupId>org.springframework</groupId>  

45.               <artifactId>spring-webmvc</artifactId>  

46.               <version>4.0.2.RELEASE</version>  

47.           </dependency>  

48.           <dependency>  

49.               <groupId>org.springframework</groupId>  

50.               <artifactId>spring-jdbc</artifactId>  

51.               <version>4.0.2.RELEASE</version>  

52.           </dependency>  

53.           <dependency>  

54.               <groupId>org.springframework</groupId>  

55.               <artifactId>spring-tx</artifactId>  

56.               <version>4.0.2.RELEASE</version>  

57.           </dependency>  

58.           <dependency>  

59.               <groupId>org.springframework</groupId>  

60.               <artifactId>spring-context-support</artifactId>  

61.               <version>4.0.2.RELEASE</version>  

62.           </dependency>  

63.           <dependency>  

64.               <groupId>org.springframework</groupId>  

65.               <artifactId>spring-orm</artifactId>  

66.               <version>4.0.2.RELEASE</version>  

67.           </dependency>  

68.           <!-- 导入Mysql数据库链接jar -->    

69.           <dependency>  

70.               <groupId>mysql</groupId>  

71.               <artifactId>mysql-connector-java</artifactId>  

72.               <version>5.1.17</version>  

73.           </dependency>  

74.           <!--c3p0 用来在applicationContext.xml中配置数据库   -->  

75.           <dependency>  

76.               <groupId>com.mchange</groupId>  

77.               <artifactId>c3p0</artifactId>  

78.               <version>0.9.5.2</version>  

79.           </dependency>  

80.           <!-- JSTL标签类 -->    

81.           <dependency>  

82.               <groupId>javax.servlet</groupId>  

83.               <artifactId>jstl</artifactId>  

84.               <version>1.2</version>  

85.           </dependency>  

86.           <dependency>  

87.               <groupId>commons-io</groupId>  

88.               <artifactId>commons-io</artifactId>  

89.               <version>2.4</version>  

90.           </dependency>  

91.           <!-- mybatis核心包 -->  

92.           <dependency>    

93.               <groupId>org.mybatis</groupId>    

94.               <artifactId>mybatis</artifactId>    

95.               <version>3.1.1</version>    

96.           </dependency>  

97.           <!-- mybatis/spring -->     

98.           <dependency>    

99.               <groupId>org.mybatis</groupId>    

100.              <artifactId>mybatis-spring</artifactId>    

101.              <version>1.2.0</version>    

102.          </dependency>   

103.          <!-- 映入JSON 对象转json转换器,主要用来restful-->   

104.          <dependency>    

105.             <groupId>org.codehaus.jackson</groupId>    

106.             <artifactId>jackson-mapper-asl</artifactId>    

107.             <version>1.9.4</version>    

108.         </dependency>    

109.         <!-- log start -->    

110.          <dependency>    

111.              <groupId>log4j</groupId>    

112.              <artifactId>log4j</artifactId>    

113.              <version>${log4j.version}</version>    

114.          </dependency>    

115.          <dependency>    

116.              <groupId>org.slf4j</groupId>    

117.              <artifactId>slf4j-api</artifactId>    

118.              <version>${slf4j.version}</version>    

119.          </dependency>    

120.          <dependency>    

121.              <groupId>org.slf4j</groupId>    

122.              <artifactId>slf4j-log4j12</artifactId>    

123.              <version>${slf4j.version}</version>    

124.          </dependency>    

125.          <!-- log end -->  

126.          <!-- 上传组件包begin -->    

127.          <dependency>    

128.              <groupId>commons-fileupload</groupId>    

129.              <artifactId>commons-fileupload</artifactId>    

130.              <version>1.3.1</version>    

131.          </dependency>    

132.          <dependency>    

133.              <groupId>commons-io</groupId>    

134.              <artifactId>commons-io</artifactId>    

135.              <version>2.4</version>    

136.          </dependency>   

137.          <!-- 上传组件包end -->    

138.          <!-- json解析包 -->   

139.          <dependency>  

140.              <groupId>net.sf.json-lib</groupId>  

141.              <artifactId>json-lib</artifactId>  

142.              <version>2.4</version>  

143.          </dependency>  

144.    </dependencies>  

145.  </project>  



四、创建daoservice的基础类库

UserDao.Java如下:

[java] view plain copy

 

1.    package com.liuhai.eshop.dao;  

2.      

3.    import java.util.List;  

4.    import java.util.Map;  

5.      

6.    import com.liuhai.eshop.domain.User;  

7.    /** 

8.     * 用户DAO接口 

9.     * @author Administrator 

10.    * 

11.    */  

12.   public interface UserDao {  

13.       /** 

14.        * 用户登录 

15.        * @param user 

16.        * @return 

17.        */  

18.       public User login(User user);  

19.       /** 

20.        * 查询所有用户 

21.        * @return 

22.        */  

23.       public List<User> getAll();  

24.       /** 

25.        * 根据条件查询用户 

26.        * @param user 

27.        * @return 

28.        */  

29.       public User getUser(User user);  

30.       /** 

31.        * 删除用户 

32.        * @param user 

33.        * @return 

34.        */  

35.       public int delete(int id);  

36.       /** 

37.        * 更新用户 

38.        * @param user 

39.        * @return 

40.        */  

41.       public int update(User user);  

42.       /** 

43.        * 添加用户 

44.        * @param user 

45.        * @return 

46.        */  

47.       public int add(User user);  

48.       /** 

49.        * 用户查询 

50.        * @param map 

51.        * @return 

52.        */  

53.       public List<User> find(Map<String,Object> map);  

54.       /** 

55.        * 获取总记录数 

56.        * @param map 

57.        * @return 

58.        */  

59.       public Long getTotal(Map<String,Object> map);  

60.       /** 

61.        * 根据id查询用户 

62.        * @param id 

63.        * @return 

64.        */  

65.       public User getUserById(int id);  

66.   }  


UserService.java 用户service层接口如下:

[java] view plain copy

 

1.    package com.liuhai.eshop.service;  

2.      

3.    import java.util.List;  

4.    import java.util.Map;  

5.    import com.liuhai.eshop.domain.User;  

6.      

7.    public interface UserService {  

8.          public List<User> getAll();  

9.          public User getUser(User user);  

10.         public int delete(int id);  

11.         public int update(User user);  

12.         public int add(User user);  

13.         public List<User> find(Map<String,Object> map);  

14.         public Long getTotal(Map<String,Object> map);  

15.         public User getUserById(int id);  

16.   }  


UserServiceImpl.java 用户service实现层如下:

[java] view plain copy

 

1.    package com.liuhai.eshop.service.impl;  

2.      

3.    import java.util.List;  

4.    import java.util.Map;  

5.      

6.    import javax.annotation.Resource;  

7.      

8.    import org.springframework.stereotype.Service;  

9.      

10.   import com.liuhai.eshop.dao.UserDao;  

11.   import com.liuhai.eshop.domain.User;  

12.   import com.liuhai.eshop.service.UserService;  

13.   @Service(value="userService")  

14.   public class UserServiceImpl implements UserService {  

15.       private UserDao userDao;  

16.       @Resource  

17.       public void setUserDao(UserDao userDao) {  

18.           this.userDao = userDao;  

19.       }  

20.       @Override  

21.       public List<User> getAll() {  

22.           return userDao.getAll();  

23.       }  

24.     

25.       @Override  

26.       public User getUser(User user) {  

27.              return userDao.getUser(user);  

28.       }  

29.     

30.       @Override  

31.       public int delete(int id) {  

32.           return userDao.delete(id);  

33.       }  

34.     

35.       @Override  

36.       public int update(User user) {  

37.            return userDao.update(user);  

38.       }  

39.     

40.       @Override  

41.       public int add(User user) {  

42.             return userDao.add(user);  

43.       }  

44.     

45.       @Override  

46.       public List<User> find(Map<String, Object> map) {  

47.            return userDao.find(map);  

48.       }  

49.     

50.       @Override  

51.       public Long getTotal(Map<String, Object> map) {  

52.            return userDao.getTotal(map);  

53.       }  

54.       public User getUserById(int id){  

55.           return userDao.getUserById(id);  

56.       }  

57.   }  

user实体类如下:

[java] view plain copy

 

1.    package com.liuhai.eshop.domain;  

2.      

3.    import java.io.Serializable;  

4.      

5.    /** 

6.     * 用户实体 

7.     * @author Administrator 

8.     * 

9.     */  

10.   public class User implements Serializable{  

11.       private static final long serialVersionUID = 1L;  

12.       private Integer id;  

13.       private String userName;  

14.       private String password;  

15.       private Integer age;  

16.       private String trueName;  

17.       private String email;  

18.       private String phone;  

19.       private String roleName;  

20.       public Integer getId() {  

21.           return id;  

22.       }  

23.       public void setId(Integer id) {  

24.           this.id = id;  

25.       }  

26.     

27.       public Integer getAge() {  

28.           return age;  

29.       }  

30.       public void setAge(Integer age) {  

31.           this.age = age;  

32.       }  

33.       public String getPassword() {  

34.           return password;  

35.       }  

36.       public void setPassword(String password) {  

37.           this.password = password;  

38.       }  

39.       public String getUserName() {  

40.           return userName;  

41.       }  

42.       public void setUserName(String userName) {  

43.           this.userName = userName;  

44.       }  

45.       public String getTrueName() {  

46.           return trueName;  

47.       }  

48.       public void setTrueName(String trueName) {  

49.           this.trueName = trueName;  

50.       }  

51.       public String getEmail() {  

52.           return email;  

53.       }  

54.       public void setEmail(String email) {  

55.           this.email = email;  

56.       }  

57.       public String getPhone() {  

58.           return phone;  

59.       }  

60.       public void setPhone(String phone) {  

61.           this.phone = phone;  

62.       }  

63.       public String getRoleName() {  

64.           return roleName;  

65.       }  

66.   <h1><a name="t8"></a>   public void setRoleName(String roleName) {</h1>     this.roleName = roleName;  

67.       }  

68.   }  



五、配置spring配置文件、jdbc和日志属性文件、myBatismapper.xml文件

    5.1  spring配置文件applicationContext.xml如下:

[html] view plain copy

 

1.    <?xml version="1.0" encoding="UTF-8"?>  

2.    <beans xmlns="http://www.springframework.org/schema/beans"  

3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

4.        xmlns:aop="http://www.springframework.org/schema/aop"  

5.        xmlns:context="http://www.springframework.org/schema/context"  

6.        xmlns:tx="http://www.springframework.org/schema/tx"  

7.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  

8.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  

9.            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd  

10.           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">  

11.       <!-- 属性配置文件 -->  

12.       <context:property-placeholder location="classpath:jdbc.properties"/>  

13.       <!-- 组件扫描,指定spring管理哪些bean -->  

14.       <context:component-scan base-package="com.liuhai.eshop.dao.impl,com.liuhai.eshop.service.impl"></context:component-scan>  

15.         

16.       <!-- 注解驱动 -->  

17.       <tx:annotation-driven/>  

18.       <!-- 创建数据源 -->  

19.       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  

20.           <property name="driverClass" value="${jdbc.driverclass}"></property>  

21.           <property name="jdbcUrl" value="${jdbc.url}"></property>  

22.           <property name="user" value="${jdbc.username}"></property>  

23.           <property name="password" value="${jdbc.password}"></property>  

24.           <property name="initialPoolSize" value="${c3p0.pool.size.init}"></property>  

25.           <property name="minPoolSize" value="${c3p0.pool.size.min}"></property>  

26.           <property name="maxPoolSize" value="${c3p0.pool.size.max}"></property>  

27.           <property name="acquireIncrement" value="${c3p0.pool.size.increment}"></property>  

28.       </bean>  

29.       <!-- springMyBatis完美整合,不需要mybatis的配置映射文件 -->    

30.       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    

31.           <property name="dataSource" ref="dataSource" />    

32.           <!-- 自动扫描mapping.xml文件 -->    

33.           <property name="mapperLocations" value="classpath:com/liuhai/eshop/mappers/*.xml"></property>    

34.       </bean>   

35.       <!-- DAO接口所在包名,Spring会自动查找其下的类 -->    

36.       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  

37.           <property name="basePackage" value="com.liuhai.eshop.dao"></property>  

38.           <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  

39.       </bean>  

40.       <!-- 事务管理器,service层面上实现事务管理的 -->  

41.       <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  

42.           <property name="dataSource" ref="dataSource"></property>  

43.       </bean>  

44.   </beans>  



5.2 jdbc属性文件jdbc.properties如下:

[html] view plain copy

 

1.    jdbc.driverclass=com.mysql.jdbc.Driver  

2.    jdbc.url=jdbc\:mysql\://localhost\:3306/eshop  

3.    jdbc.username=root  

4.    jdbc.password=123456  

5.    c3p0.pool.size.max=10  

6.    c3p0.pool.size.min=2  

7.    c3p0.pool.size.init=3  

8.    c3p0.pool.size.increment=2  

9.      

10.   hibernate.dialect=org.hibernate.dialect.MySQL5Dialect  

11.   hibernate.show_sql=true  

12.   hibernate.hbm2ddl.auto=none  

5.3日志属性文件log4j.properties如下:

[html] view plain copy

 

1.    log4j.rootLogger=INFO,Console,File    

2.    #定义日志输出目的地为控制台    

3.    log4j.appender.Console=org.apache.log4j.ConsoleAppender    

4.    log4j.appender.Console.Target=System.out    

5.    #可以灵活地指定日志输出格式,下面一行是指定具体的格式    

6.    log4j.appender.Console.layout = org.apache.log4j.PatternLayout    

7.    log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n    

8.      

9.    log4j.logger.java.sql.ResultSet=INFO    

10.   log4j.logger.org.apache=INFO    

11.   log4j.logger.java.sql.Connection=DEBUG    

12.   log4j.logger.java.sql.Statement=DEBUG    

13.   log4j.logger.java.sql.PreparedStatement=DEBUG    

14.       

15.   #文件大小到达指定尺寸的时候产生一个新的文件    

16.   log4j.appender.File = org.apache.log4j.RollingFileAppender    

17.   #指定输出目录    

18.   log4j.appender.File.File = logs/ssm.log    

19.   #定义文件最大大小    

20.   log4j.appender.File.MaxFileSize = 10MB    

21.   输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志    

22.   log4j.appender.File.Threshold =INFO    

23.   log4j.appender.File.layout = org.apache.log4j.PatternLayout    

24.   log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n   

5.4 myBatismapper.xml文件(UserMapper.xml

[html] view plain copy

 

1.    <?xml version="1.0" encoding="UTF-8"?>  

2.    <!DOCTYPE mapper  

3.    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  

4.    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  

5.    <mapper namespace="com.liuhai.eshop.dao.UserDao">  

6.         <!-- 定义缓存  一般是一级缓存,如果用同一个sqlsession 那么相同查询直接会从缓存中查找 -->  

7.        <cache size="1024" flushInterval="60000" eviction="LRU" readOnly="false"></cache>  

8.        <!-- 增加 -->  

9.        <insert id="add" parameterType="com.liuhai.eshop.domain.User">  

10.           insert into users values(null,#{userName},#{password},#{age},#{trueName},#{email},#{phone},#{roleName})  

11.       </insert>  

12.       <resultMap id="userResultMap" type="com.liuhai.eshop.domain.User" >  

13.           <id property="id" column="id"/>  

14.           <result property="userName" column="userName"/>  

15.           <result property="password" column="password"/>  

16.           <result property="age" column="age"/>  

17.           <result property="trueName" column="trueName" />  

18.           <result property="email" column="email" />  

19.           <result property="phone" column="phone" />  

20.           <result property="roleName" column="roleName" />  

21.       </resultMap>  

22.       <select id="getUserById" parameterType="Integer" resultMap="userResultMap">  

23.           select * from users where id=#{id}  

24.       </select>  

25.       <select id="find" parameterType="com.liuhai.eshop.domain.User" resultMap="userResultMap">  

26.           select * from users   

27.           <where>  

28.               <if test="userName!=null and userName!='' ">  

29.                   and userName like #{userName}  

30.               </if>  

31.           </where>  

32.           <if test="start!=null and size!=null">  

33.               limit #{start},#{size}  

34.           </if>  

35.       </select>  

36.       <select id="getTotal" parameterType="Map" resultType="Long">  

37.           select count(*) from users  

38.           <where>  

39.               <if test="userName!=null and userName!='' ">  

40.                   and userName like #{userName}  

41.               </if>  

42.           </where>  

43.       </select>  

44.       <!-- 用户删除 -->  

45.       <delete id="delete" parameterType="Integer">  

46.           delete from users where id = #{id}  

47.       </delete>  

48.       <!-- 用户修改 -->  

49.       <update id="update" parameterType="com.liuhai.eshop.domain.User">  

50.           update users  

51.           <set>  

52.               <if test="age != null and age != ''">age = #{age},</if>  

53.               <if test="userName != null and userName != ''">userName = #{userName},</if>  

54.               <if test="password != null and password != ''">password = #{password},</if>  

55.               <if test="trueName != null and trueName != ''">trueName = #{trueName},</if>  

56.               <if test="email != null and email != ''">email = #{email},</if>  

57.               <if test="phone != null and phone != ''">phone = #{phone},</if>  

58.               <if test="roleName != null and roleName != ''">roleName = #{roleName},</if>  

59.           </set>  

60.           where id = #{id}  

61.       </update>  

62.   </mapper>  

六、创建测试类,测试数据源是否通了

    以上spring框架及spring+mybatis配置基本完成,再就是创建测试类测试数据源是否通

 首先创建一个mysql库的,再建立users表,创建测试类TestSpring.java如下:

   

[java] view plain copy

 

1.    package com.liuhai.eshop;  

2.      

3.    import org.junit.Test;  

4.    import org.springframework.context.ApplicationContext;  

5.    import org.springframework.context.support.ClassPathXmlApplicationContext;  

6.      

7.    import com.liuhai.eshop.domain.User;  

8.    import com.liuhai.eshop.service.UserService;  

9.      

10.   public class TestSpring {  

11.       @Test  

12.       public void TestUserService() throws Exception{  

13.           @SuppressWarnings("resource")  

14.           ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");  

15.           UserService us=(UserService) ac.getBean("userService");  

16.           User user=new User();  

17.           user.setAge(1);  

18.           user.setUserName("zhangsan");  

19.           user.setPassword("123456");  

20.           user.setTrueName("张三");  

21.           us.add(user);  

22.       }  

23.   }  

最后查询users表中是否有新插入的数据。

七、整合SpringMVC

7.1、配置spring-mvc.xml

配置里面的注释也很详细,在此就不说了,主要是自动扫描控制器,视图模式,注解的启动这三个

[html] view plain copy

 

1.    <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>  

2.    <beans xmlns="http://www.springframework.org/schema/beans"  

3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

4.        xmlns:context="http://www.springframework.org/schema/context"  

5.        xmlns:mvc="http://www.springframework.org/schema/mvc"  

6.        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd  

7.            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  

8.            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">  

9.          

10.       <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->    

11.       <context:component-scan base-package="com.liuhai.eshop.controller"></context:component-scan>  

12.       <!--避免IE执行AJAX时,返回JSON出现下载文件 -->    

13.       <bean id="mappingJacksonHttpMessageConverter"    

14.           class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">    

15.           <property name="supportedMediaTypes">    

16.               <list>    

17.                   <value>text/html;charset=UTF-8</value>    

18.               </list>    

19.           </property>    

20.       </bean>    

21.       <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->   

22.       <!-- 详细介绍:http://www.ibm.com/developerworks/cn/web/wa-restful/ -->   

23.       <bean    

24.           class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">    

25.           <property name="messageConverters">    

26.               <list>    

27.                   <ref bean="mappingJacksonHttpMessageConverter" /> <!-- 对象转化为JSON转换器 -->    

28.               </list>    

29.           </property>    

30.       </bean>    

31.       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  

32.           <property name="prefix" value="/jsps/"></property>  

33.           <property name="suffix" value=".jsp"></property>  

34.       </bean>  

35.       <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  

36.           <!-- 默认编码 -->   

37.           <property name="defaultEncoding" value="utf-8"></property>  

38.           <!-- 文件大小最大值 -->    

39.           <property name="maxUploadSize" value="10485760000"></property>  

40.           <!-- 内存中的最大值 -->    

41.           <property name="maxInMemorySize" value="40960"></property>  

42.       </bean>  

43.   </beans></span>  

7.2、配置web.xml文件

        这里面对applicationContext.xml的引入以及配置的spring-mvcServlet就是为了完成SSM整合,之前2框架整合不需要在此处进行任何配置。配置一样有详细注释,不多解释了。

[html] view plain copy

 

1.    <?xml version="1.0" encoding="UTF-8"?>  

2.    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    

3.        xmlns="http://java.sun.com/xml/ns/javaee"    

4.        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"    

5.        version="3.0">    

6.          

7.        <display-name>web 测试页面</display-name>  

8.        <!-- Springmybatis的配置文件 -->    

9.        <context-param>  

10.           <param-name>contextConfigLocation</param-name>  

11.           <param-value>classpath:applicationContext.xml</param-value>  

12.       </context-param>  

13.       <!-- 编码过滤器 -->  

14.       <filter>  

15.           <filter-name>encodingFilter</filter-name>  

16.           <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  

17.           <async-supported>true</async-supported>  

18.           <init-param>  

19.               <param-name>encoding</param-name>  

20.               <param-value>UTF-8</param-value>  

21.           </init-param>  

22.       </filter>  

23.       <filter-mapping>  

24.           <filter-name>encodingFilter</filter-name>  

25.           <url-pattern>/*</url-pattern>  

26.       </filter-mapping>  

27.       <!-- Spring监听器:启动Web容器时,自动装配ApplicationContext的配置信息,即上面的:contextConfigLocation-->   

28.       <listener>  

29.           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  

30.       </listener>  

31.       <!-- 防止Spring内存溢出监听器 -->   

32.       <listener>  

33.           <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  

34.       </listener>  

35.       <!-- Spring MVC servlet -->    

36.       <servlet>  

37.           <servlet-name>springMVC</servlet-name>  

38.           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

39.           <init-param>  

40.               <param-name>contextConfigLocation</param-name>  

41.               <param-value>classpath:spring-mvc.xml</param-value>  

42.           </init-param>  

43.           <load-on-startup>1</load-on-startup>  

44.           <async-supported>true</async-supported>  

45.       </servlet>  

46.       <servlet-mapping>  

47.           <servlet-name>springMVC</servlet-name>  

48.           <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 也可以是/-->    

49.           <url-pattern>*.do</url-pattern>  

50.       </servlet-mapping>  

51.       <!-- 解决由于采用spring的过滤器,导致页面引用的JSimagesCSS发生找不到的错误;也可以用使用spring mvc  <mvc:resources /> 注解 用来处理静态文件 -->  

52.       <servlet-mapping>  

53.           <servlet-name>default</servlet-name>  

54.           <url-pattern>*.css</url-pattern>  

55.       </servlet-mapping>  

56.       <servlet-mapping>  

57.           <servlet-name>default</servlet-name>  

58.           <url-pattern>*.gif</url-pattern>  

59.       </servlet-mapping>  

60.       <servlet-mapping>  

61.           <servlet-name>default</servlet-name>  

62.           <url-pattern>*.png</url-pattern>  

63.       </servlet-mapping>  

64.       <servlet-mapping>  

65.           <servlet-name>default</servlet-name>  

66.           <url-pattern>*.jpg</url-pattern>  

67.       </servlet-mapping>  

68.       <servlet-mapping>  

69.           <servlet-name>default</servlet-name>  

70.           <url-pattern>*.js</url-pattern>  

71.       </servlet-mapping>  

72.       <welcome-file-list>  

73.           <welcome-file>/index.jsp</welcome-file>    

74.       </welcome-file-list>  

75.   </web-app>  

7.3新建控制类controllerjsp页面之间交互

    在这里使用jsp页面引入easyui集成并实现增删改查功能

userManage.jsp如下:

[html] view plain copy

 

1.    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  

2.    <%  

3.    String path = request.getContextPath();  

4.    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  

5.    %>  

6.    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  

7.    <html>  

8.      <head>  

9.        <base href="<%=basePath%>">  

10.         

11.       <title>My JSP 'userManage.jsp' starting page</title>  

12.         

13.       <meta http-equiv="pragma" content="no-cache">  

14.       <meta http-equiv="cache-control" content="no-cache">  

15.       <meta http-equiv="expires" content="0">      

16.       <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  

17.       <meta http-equiv="description" content="This is my page">  

18.       <link rel="stylesheet" type="text/css" href="jquery-easyui-1.5.1/themes/default/easyui.css">  

19.       <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.1/themes/icon.css">  

20.       <script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.1/jquery.min.js"></script>  

21.       <script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>  

22.       <script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.1/locale/easyui-lang-zh_CN.js"></script>  

23.       <script type="text/javascript">  

24.           var url;  

25.           function openUserAddDialog() {  

26.               $("#dlg").dialog("open").dialog("setTitle", "添加用户信息");  

27.               url = "${pageContext.request.contextPath}/user/save.do";  

28.           }  

29.           function saveUser() {  

30.               $("#fm").form("submit", {  

31.                   url : url,  

32.                   onSubmit : function() {  

33.                       if ($("#roleName").combobox("getValue") == "") {  

34.                           $.messager.alert("系统提示", "请选择用户角色!");  

35.                           return false;  

36.                       }  

37.                       return $(this).form("validate");  

38.                   },  

39.                   success : function(result) {  

40.                       var result = eval('(' + result + ')');  

41.                       if (result.success) {  

42.                           $.messager.alert("系统提示", "保存成功!");  

43.                           resetValue();  

44.                           $("#dlg").dialog("close");  

45.                           $("#dg").datagrid("reload");  

46.                       } else {  

47.                           $.messager.alert("系统提示", "保存失败!");  

48.                           return;  

49.                       }  

50.                   }  

51.               });  

52.           }  

53.           function searchUser() {  

54.               $("#dg").datagrid('load', {  

55.                   "userName" : $("#s_userName").val()  

56.               });  

57.           }  

58.           function resetValue() {  

59.               $("#userName").val("");  

60.               $("#password").val("");  

61.               $("#trueName").val("");  

62.               $("#email").val("");  

63.               $("#phone").val("");  

64.               $("#roleName").combobox("setValue", "");  

65.           }  

66.           function deleteUser() {  

67.               var selectedRows = $("#dg").datagrid("getSelections");  

68.               if (selectedRows.length == 0) {  

69.                   $.messager.alert("系统提示", "请选择要删除的数据!");  

70.                   return;  

71.               }  

72.               var strIds = [];  

73.               for ( var i = 0; i < selectedRows.length; i++) {  

74.                   strIds.push(selectedRows[i].id);  

75.               }  

76.               var ids = strIds.join(",");  

77.               $.messager.confirm("系统提示", "您确定要删除这<font color=red>"  

78.                       + selectedRows.length + "</font>条数据吗?", function(r) {  

79.                   if (r) {  

80.                       $.post("${pageContext.request.contextPath}/user/delete.do", {  

81.                           ids : ids  

82.                       }, function(result) {  

83.                           if (result.success) {  

84.                               $.messager.alert("系统提示", "数据已成功删除!");  

85.                               $("#dg").datagrid("reload");  

86.                           } else {  

87.                               $.messager.alert("系统提示", "数据删除失败,请联系系统管理员!");  

88.                           }  

89.                       }, "json");  

90.                   }  

91.               });  

92.           }  

93.           function openUserModifyDialog() {  

94.               var selectedRows = $("#dg").datagrid("getSelections");  

95.               if (selectedRows.length != 1) {  

96.                   $.messager.alert("系统提示", "请选择一条要编辑的数据!");  

97.                   return;  

98.               }  

99.               var row = selectedRows[0];  

100.              $("#dlg").dialog("open").dialog("setTitle", "编辑用户信息");  

101.              $("#fm").form("load", row);  

102.              url = "${pageContext.request.contextPath}/user/save.do?id=" + row.id;  

103.          }  

104.      </script>  

105.    </head>  

106.      

107.    <body style="margin: 1px">  

108.      <table id="dg" title="用户管理" class="easyui-datagrid" fitColumns="true"  

109.          pagination="true" rownumbers="true"  

110.          url="${pageContext.request.contextPath}/user/list.do" fit="true"  

111.          toolbar="#tb">  

112.          <thead>  

113.              <tr>  

114.                  <th field="cb" checkbox="true" align="center"></th>  

115.                  <th field="id" width="50" align="center">编号</th>  

116.                  <th field="userName" width="50" align="center">用户名</th>  

117.                  <th field="password" width="50" align="center">密码</th>  

118.                  <th field="trueName" width="50" align="center">真实姓名</th>  

119.                  <th field="email" width="50" align="center">邮件</th>  

120.                  <th field="phone" width="50" align="center">联系电话</th>  

121.                  <th field="roleName" width="50" align="center">角色</th>  

122.              </tr>  

123.          </thead>  

124.      </table>  

125.      <div id="tb">  

126.          <a href="javascript:openUserAddDialog()" class="easyui-linkbutton"  

127.              iconCls="icon-add" plain="true">添加</a> <a  

128.              href="javascript:openUserModifyDialog()" class="easyui-linkbutton"  

129.              iconCls="icon-edit" plain="true">修改</a> <a  

130.              href="javascript:deleteUser()" class="easyui-linkbutton"  

131.              iconCls="icon-remove" plain="true">删除</a>  

132.          <div>  

133.               用户名: <input type="text" id="s_userName" size="20"  

134.                  onkeydown="if(event.keyCode == 13)searchUser()" /> <a  

135.                  href="javascript:searchUser()" class="easyui-linkbutton"  

136.                  iconCls="icon-search" plain="true">查询</a>  

137.          </div>  

138.          <div id="dlg-buttons">  

139.              <a href="javascript:saveUser()" class="easyui-linkbutton"  

140.                  iconCls="icon-ok">保存</a> <a href="javascript:closeUserDialog()"  

141.                  class="easyui-linkbutton" iconCls="icon-cancel">关闭</a>  

142.          </div>  

143.          <div id="dlg" class="easyui-dialog"  

144.              style="width: 730px;height:280px;padding:10px 10px;" closed="true"  

145.              buttons="#dlg-buttons">  

146.              <form method="post" id="fm">  

147.                  <table cellspacing="8px;">  

148.                      <tr>  

149.                          <td>用户名:</td>  

150.                          <td><input type="text" id="userName" name="userName"  

151.                              class="easyui-validatebox" required="true" /> <span  

152.                              style="color: red">*</span>  

153.                          </td>  

154.                          <td>  </td>  

155.                          <td>密码:</td>  

156.                          <td><input type="password" id="password" name="password"  

157.                              class="easyui-validatebox" required="true" /> <span  

158.                              style="color: red">*</span>  

159.                          </td>  

160.                      </tr>  

161.                      <tr>  

162.                          <td>真实姓名:</td>  

163.                          <td><input type="text" id="trueName" name="trueName"  

164.                              class="easyui-validatebox" required="true" /> <span  

165.                              style="color: red">*</span>  

166.                          </td>  

167.                          <td>  </td>  

168.                          <td>邮箱:</td>  

169.                          <td><input type="text" id="email" name="email"  

170.                              validType="email" class="easyui-validatebox" required="true" /> <span  

171.                              style="color: red">*</span>  

172.                          </td>  

173.                      </tr>  

174.                      <tr>  

175.                          <td>联系电话:</td>  

176.                          <td><input type="text" id="phone" name="phone"  

177.                              class="easyui-validatebox" required="true" /> <span  

178.                              style="color: red">*</span>  

179.                          </td>  

180.                          <td>  </td>  

181.                          <td>用户角色:</td>  

182.                          <td><select name="roleName" class="easyui-combobox"  

183.                              id="roleName" style="width: 154px;" editable="false"  

184.                              panelHeight="auto">  

185.                                  <option value="">请选择角色</option>  

186.                                  <option value="系统管理员">系统管理员</option>  

187.                                  <option value="销售主管">销售主管</option>  

188.                                  <option value="客户经理">客户经理</option>  

189.                                  <option value="高管">高管</option>  

190.                          </select>  <span style="color: red">*</span>  

191.                          </td>  

192.                      </tr>  

193.                  </table>  

194.              </form>  

195.          </div>  

196.      </div>  

197.    </body>  

198.  </html>  

UserController.java

[java] view plain copy

 

1.    package com.liuhai.eshop.controller;  

2.      

3.    import java.io.File;  

4.    import java.io.IOException;  

5.    import java.util.HashMap;  

6.    import java.util.List;  

7.    import java.util.Map;  

8.      

9.    import javax.annotation.Resource;  

10.   import javax.servlet.http.HttpServletRequest;  

11.   import javax.servlet.http.HttpServletResponse;  

12.     

13.   import net.sf.json.JSONArray;  

14.   import net.sf.json.JSONObject;  

15.     

16.   import org.apache.commons.io.FileUtils;  

17.   import org.slf4j.Logger;  

18.   import org.slf4j.LoggerFactory;  

19.   import org.springframework.http.HttpStatus;  

20.   import org.springframework.http.ResponseEntity;  

21.   import org.springframework.stereotype.Controller;  

22.   import org.springframework.ui.Model;  

23.   import org.springframework.web.bind.annotation.RequestMapping;  

24.   import org.springframework.web.bind.annotation.RequestMethod;  

25.   import org.springframework.web.bind.annotation.RequestParam;  

26.   import org.springframework.web.bind.annotation.ResponseBody;  

27.   import org.springframework.web.multipart.MultipartFile;  

28.     

29.   import com.liuhai.eshop.domain.User;  

30.   import com.liuhai.eshop.service.UserService;  

31.   import com.liuhai.eshop.util.PageBean;  

32.   import com.liuhai.eshop.util.ResponseUtil;  

33.   import com.liuhai.eshop.util.StringUtil;  

34.     

35.   @Controller  

36.   @RequestMapping("/user")  

37.   public class UserController {  

38.       private static Logger log=LoggerFactory.getLogger(UserController.class);  

39.       @Resource  

40.       private UserService userService;  

41.         

42.       @RequestMapping("/showUser.do")  

43.       public String toIndex(HttpServletRequest request,Model model){  

44.           System.out.println("liuhaitest");  

45.           return "showUser";  

46.       }  

47.       // /user/test.do?id=1  

48.       @RequestMapping(value="/test.do",method=RequestMethod.GET)    

49.       public String test(HttpServletRequest request,Model model){    

50.           int userId = Integer.parseInt(request.getParameter("id"));    

51.           System.out.println("userId:"+userId);  

52.           User user=null;  

53.           if (userId==1) {  

54.                user = new User();    

55.                user.setAge(11);  

56.                user.setId(1);  

57.                user.setPassword("123");  

58.                user.setUserName("javen");  

59.           }  

60.           log.debug(user.toString());  

61.           model.addAttribute("user", user);    

62.           return "index";    

63.       }    

64.       // /user/showUser.do?id=1  

65.       @RequestMapping(value="/showUser.do",method=RequestMethod.GET)    

66.       public String toindex(HttpServletRequest request,Model model){    

67.           int userId = Integer.parseInt(request.getParameter("id"));    

68.           System.out.println("userId:"+userId);  

69.           User user = this.userService.getUserById(userId);    

70.           log.debug(user.toString());  

71.           model.addAttribute("user", user);    

72.           return "showUser";    

73.       }    

74.         

75.    // /user/showUser2.do?id=1  

76.       @RequestMapping(value="/showUser2.do",method=RequestMethod.GET)    

77.       public String toIndex2(@RequestParam("id") String id,Model model){    

78.           int userId = Integer.parseInt(id);    

79.           System.out.println("userId:"+userId);  

80.           User user = this.userService.getUserById(userId);    

81.           log.debug(user.toString());  

82.           model.addAttribute("user", user);    

83.           return "showUser";    

84.       }    

85.     

86.       // /user/jsontype.do?id=1  

87.       @RequestMapping(value="/jsontype.do",method=RequestMethod.GET)    

88.       public @ResponseBody User getUserInJson(@RequestParam("id") String id,Map<String, Object> model){    

89.           int userId = Integer.parseInt(id);    

90.           System.out.println("userId:"+userId);  

91.           User user = this.userService.getUserById(userId);    

92.           log.info(user.toString());  

93.           return user;    

94.       }    

95.       // /user/jsontype2.do?id=1  

96.       @RequestMapping(value="/jsontype2.do",method=RequestMethod.GET)    

97.       public ResponseEntity<User>  getUserInJson2(@RequestParam("id") String id,Map<String, Object> model){    

98.           int userId = Integer.parseInt(id);    

99.           System.out.println("userId:"+userId);  

100.          User user = this.userService.getUserById(userId);    

101.          log.info(user.toString());  

102.          return new ResponseEntity<User>(user,HttpStatus.OK);    

103.      }   

104.        

105.      //文件上传页面  

106.      @RequestMapping(value="/upload.do")  

107.      public String showUploadPage(){  

108.          return "file";  

109.      }  

110.      //文件上传  

111.      @RequestMapping(value="/doUpload.do",method=RequestMethod.POST)  

112.      public String doUploadFile(@RequestParam("file")MultipartFile file) throws IOException{  

113.          if (!file.isEmpty()) {  

114.              log.info("Process file:{}",file.getOriginalFilename());  

115.          }  

116.          FileUtils.copyInputStreamToFile(file.getInputStream(), new File("E:\\",System.currentTimeMillis()+file.getOriginalFilename()));  

117.          return "succes";  

118.      }  

119.      /** 

120.       * 用户管理页面 

121.       * @return 

122.       */  

123.      @RequestMapping(value="/userManage.do")  

124.      public String userManagePage(){  

125.          return "userManage";  

126.      }  

127.      /** 

128.       * 添加或者修改 

129.       * @param user 

130.       * @param res 

131.       * @return 

132.       * @throws Exception 

133.       */  

134.      @RequestMapping("/save.do")  

135.      public String save(User user,HttpServletResponse res) throws Exception{  

136.          //操作记录条数,初始化为0  

137.          int resultTotal = 0;  

138.          if (user.getId() == null) {  

139.              resultTotal = userService.add(user);  

140.          }else{  

141.              resultTotal = userService.update(user);  

142.          }  

143.          JSONObject jsonObject = new JSONObject();  

144.          if(resultTotal > 0){   //说明修改或添加成功  

145.              jsonObject.put("success", true);  

146.          }else{  

147.              jsonObject.put("success", false);  

148.          }  

149.          ResponseUtil.write(res, jsonObject);  

150.          return null;  

151.      }  

152.      /** 

153.       * 用户分页查询 

154.       * @param page 

155.       * @param rows 

156.       * @param s_user 

157.       * @param res 

158.       * @return 

159.       * @throws Exception 

160.       */  

161.      @RequestMapping("/list.do")  

162.      public String list(@RequestParam(value="page",required=false) String page,@RequestParam(value="rows",required=false) String rows,User s_user,HttpServletResponse res) throws Exception{  

163.          PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));  

164.          Map<String,Object> map=new HashMap<String,Object>();  

165.          map.put("userName", StringUtil.formatLike(s_user.getUserName()));  

166.          map.put("start", pageBean.getStart());  

167.          map.put("size", pageBean.getPageSize());  

168.          List<User> userList=userService.find(map);  

169.          Long total=userService.getTotal(map);  

170.          JSONObject result=new JSONObject();  

171.          JSONArray jsonArray=JSONArray.fromObject(userList);  

172.          result.put("rows", jsonArray);  

173.          result.put("total", total);  

174.          ResponseUtil.write(res, result);  

175.          return null;  

176.      }  

177.      /** 

178.       * 删除用户 

179.       * @param ids 

180.       * @param res 

181.       * @return 

182.       * @throws Exception 

183.       */  

184.      @RequestMapping("/delete.do")  

185.      public String delete(@RequestParam(value="ids") String ids,HttpServletResponse res) throws Exception{  

186.          String[] idStr = ids.split(",");  

187.          JSONObject jsonObject = new JSONObject();  

188.          for (String id : idStr) {  

189.              userService.delete(Integer.parseInt(id));  

190.          }  

191.          jsonObject.put("success", true);  

192.          ResponseUtil.write(res, jsonObject);  

193.          return null;  

194.      }  

195.  }  

7.4其它工具类及jsp页面

   分页ModelPageBean.java

[java] view plain copy

 

1.    package com.liuhai.eshop.util;  

2.    /** 

3.     * 分页Model 

4.     * @author Administrator 

5.     * 

6.     */  

7.    public class PageBean {  

8.        private int page; // 第几页  

9.        private int pageSize; // 每页记录数  

10.       private int start;  // 起始页  

11.       public PageBean(int page, int pageSize) {  

12.           super();  

13.           this.page = page;  

14.           this.pageSize = pageSize;  

15.       }  

16.       public int getPage() {  

17.           return page;  

18.       }  

19.       public void setPage(int page) {  

20.           this.page = page;  

21.       }  

22.       public int getPageSize() {  

23.           return pageSize;  

24.       }  

25.       public void setPageSize(int pageSize) {  

26.           this.pageSize = pageSize;  

27.       }  

28.       public int getStart() {  

29.           return (page-1)*pageSize;  

30.       }  

31.   }  

  用于返回json数据ResponseUtil.java

[java] view plain copy

 

1.    package com.liuhai.eshop.util;  

2.      

3.    import java.io.PrintWriter;  

4.      

5.    import javax.servlet.http.HttpServletResponse;  

6.    /*** 

7.     * 主要用于返回json数据 

8.     * @author Administrator 

9.     */  

10.   public class ResponseUtil {  

11.       public static void write(HttpServletResponse response,Object object)throws Exception{  

12.           response.setContentType("text/html;charset=utf-8");  

13.           PrintWriter out=response.getWriter();  

14.           out.println(object);  

15.           out.flush();  

16.           out.close();  

17.       }  

18.   }  

字符串工具类StringUtil.java如下:

[java] view plain copy

 

1.    package com.liuhai.eshop.util;  

2.    /*** 

3.     * 字符串工具类 

4.     * @author Administrator 

5.     * 

6.     */  

7.    public class StringUtil {  

8.         /** 

9.         * 判断是否是空 

10.        * @param str 

11.        * @return 

12.        */  

13.       public static boolean isEmpty(String str){  

14.           if(str==null||"".equals(str.trim())){  

15.               return true;  

16.           }else{  

17.               return false;  

18.           }  

19.       }  

20.         

21.       /** 

22.        * 判断是否不是空 

23.        * @param str 

24.        * @return 

25.        */  

26.       public static boolean isNotEmpty(String str){  

27.           if((str!=null)&&!"".equals(str.trim())){  

28.               return true;  

29.           }else{  

30.               return false;  

31.           }  

32.       }  

33.         

34.       /** 

35.        * 格式化模糊查询 

36.        * @param str 

37.        * @return 

38.        */  

39.       public static String formatLike(String str){  

40.           if(isNotEmpty(str)){  

41.               return "%"+str+"%";  

42.           }else{  

43.               return null;  

44.           }  

45.       }  

46.   }  

上传文件file.jsp页面

[html] view plain copy

 

1.    <%@ page language="java" contentType="text/html; charset=utf-8"  

2.        pageEncoding="utf-8"%>  

3.    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  

4.    <html>  

5.    <head>  

6.    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  

7.    <title>Insert title here</title>  

8.    </head>  

9.    <body>  

10.       <h1>上传文件</h1>  

11.       <form method="post" action="../user/doUpload.do" enctype="multipart/form-data">  

12.           <input type="file" name="file"/>  

13.           <input type="submit" value="上传文件"/>  

14.             

15.       </form>  

16.   </body>  

17.   </html>  

八、项目结果及目录


转自http://blog.csdn.net/liuhaiabc/article/details/53899519


0 0
原创粉丝点击