一个最基本的SSM框架的搭建

开始第一步,上结构图:

几点说明:第一 ,oracle目前没出免费的maven版本,所以采用添加jar包的方式,放在lib里面,如果是mysql,则不需要,只在maven下pom里配置就可以了

第二,此项目读写数据采用map来做,没用JavaBean,个人觉得有时候方便一点

第三,项目的原始结构,自己去找,我上一篇文章好像也有,如果搭建maven项目,包括maven下怎么出现WebContent(myeclipse是WebRoot),包括如何生成web.xml,以及红叉的解决,搭建好了,继续看下面各个文件的配置:

第一个,项目最下方的pom.xml

 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  3. <modelVersion>4.0.0</modelVersion>

  4. <groupId>ali77</groupId>

  5. <artifactId>ssm_sample</artifactId>

  6. <packaging>war</packaging>

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

  8. <name>ssm_sample Maven Webapp</name>

  9. <url>http://maven.apache.org</url>

  10. <dependencies>

  11. <dependency>

  12. <groupId>junit</groupId>

  13. <artifactId>junit</artifactId>

  14. <version>3.8.1</version>

  15. <scope>test</scope>

  16. </dependency>

  17. <dependency>

  18. <groupId>javax.servlet</groupId>

  19. <artifactId>jstl</artifactId>

  20. <version>1.2</version>

  21. </dependency>

  22. <dependency>

  23. <groupId>org.springframework</groupId>

  24. <artifactId>spring-web</artifactId>

  25. <version>4.0.6.RELEASE</version>

  26. </dependency>

  27. <dependency>

  28. <groupId>org.springframework</groupId>

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

  30. <version>4.0.6.RELEASE</version>

  31. </dependency>

  32. <dependency>

  33. <groupId>commons-dbcp</groupId>

  34. <artifactId>commons-dbcp</artifactId>

  35. <version>1.4</version>

  36. </dependency>

  37. <dependency>

  38. <groupId>commons-pool</groupId>

  39. <artifactId>commons-pool</artifactId>

  40. <version>1.4</version>

  41. </dependency>

  42. <dependency>

  43. <groupId>org.mybatis</groupId>

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

  45. <version>1.1.1</version>

  46. </dependency>

  47. <dependency>

  48. <groupId>org.aspectj</groupId>

  49. <artifactId>aspectjweaver</artifactId>

  50. <version>1.7.1</version>

  51. </dependency>

  52. <dependency>

  53. <groupId>javax.servlet</groupId>

  54. <artifactId>servlet-api</artifactId>

  55. <version>3.0-alpha-1</version>

  56. </dependency>

  57. </dependencies>

  58. <build>

  59. <finalName>ssm_sample</finalName>

  60. </build>

  61. </project>


这些都是很基本的,就不要再做删减了,可以根据功能新增,添加完记得maven-install一下,然后检查一下,是否添加成功

下一步:几个文件就依次给了,按照结构图从下到上的顺序吧

##----index.jsp

 
  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>欢迎页</title>

  8. </head>

  9. <body>

  10. (这是一个maven下搭建的一个最基本的ssm框架) <br/>

  11. <a href="${pageContext.request.contextPath}/user/show_user.do">进入主页面</a>

  12. </body>

  13. </html>

##----web.xml

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

  2. <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"

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

  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

  5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  6. <display-name>ssm_sample</display-name>

  7. <welcome-file-list>

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

  9. </welcome-file-list>

  10. <!-- 指定spring bean 的配置文件所在目录 -->

  11. <context-param>

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

  13. <param-value>classpath*:applicationContext.xml</param-value>

  14. </context-param>

  15. <!-- 配置监听spring -->

  16. <listener>

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

  18. </listener>

  19. <!-- 配置spring字符编码为utf-8 -->

  20. <filter>

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

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

  23. <init-param>

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

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

  26. </init-param>

  27. <init-param>

  28. <param-name>forceEncoding</param-name>

  29. <param-value>true</param-value>

  30. </init-param>

  31. </filter>

  32. <filter-mapping>

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

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

  35. </filter-mapping>

  36.  
  37. <servlet-mapping>

  38. <servlet-name>spring</servlet-name>

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

  40. </servlet-mapping>

  41. <!-- springMVC的配置 -->

  42. <servlet>

  43. <servlet-name>spring</servlet-name>

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

  45. <init-param>

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

  47. <param-value>classpath:springmvc.xml</param-value>

  48. </init-param>

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

  50. </servlet>

  51. </web-app>


##----main.jsp

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

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

  3. <html>

  4. <head>

  5. <title>主页面</title>

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

  7. </head>

  8. <body>

  9. 用户名: ${requestScope.user_name } (这是来自数据库的数据) <br/>

  10. 密 码: ${requestScope.user_password } (这是经过Sevice层处理过的密码) <br/>

  11. (made by capricornce)

  12. </body>

  13. </html>


##----showUser-mapper.xml

 
  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.  
  6. <mapper namespace="com.ali77.mapper.UserMapper">

  7. <select id="listUsers" resultType="java.util.Map">

  8. select

  9. user_id,user_name,user_password from user_info

  10. </select>

  11. </mapper>


##----applicationContext.xml

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

  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"

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

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

  5. xsi:schemaLocation="http://www.springframework.org/schema/beans

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

  7. http://www.springframework.org/schema/mvc

  8. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

  9. http://www.springframework.org/schema/context

  10. http://www.springframework.org/schema/context/spring-context-3.2.xsd

  11. http://www.springframework.org/schema/aop

  12. http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

  13. http://www.springframework.org/schema/tx

  14. http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

  15.  
  16. <mvc:annotation-driven />

  17. <!-- 支持注解Aspectj -->

  18. <aop:aspectj-autoproxy />

  19. <!-- 支持注解配置bean -->

  20. <context:annotation-config />

  21. <!--使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入base-package为需要扫描的包(含所有子包) -->

  22. <context:component-scan base-package="com.ali77.controller"/>

  23. <context:component-scan base-package="com.ali77.service"/>

  24. <!-- 加载jdbc.properties文件中的内容,jdbc.properties文件中key命名要有一定的特殊规则 -->

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

  26. <!-- 配置数据源,dbcp -->

  27. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"

  28. destroy-method="close">

  29. <property name="driverClassName" value="${jdbc.driverClass}" />

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

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

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

  33. <property name="initialSize" value="${jdbc.initialSize}" />

  34. <property name="maxActive" value="${jdbc.maxActive}" />

  35. <property name="maxIdle" value="${jdbc.maxIdle}" />

  36. <property name="minIdle" value="${jdbc.minIdle}" />

  37. <!-- 连接被泄露时是否打印 -->

  38. <property name="logAbandoned" value="true"/>

  39. <!--removeAbandoned: 是否自动回收超时连接-->

  40. <property name="removeAbandoned" value="true"/>

  41. <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->

  42. <property name="removeAbandonedTimeout" value="180"/>

  43. <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->

  44. <property name="maxWait" value="60000"/>

  45. <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->

  46. <property name="timeBetweenEvictionRunsMillis" value="10000"/>

  47. <!-- 在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->

  48. <property name="numTestsPerEvictionRun" value="10"/>

  49. <!-- 1000 * 60 * 30 连接在池中保持空闲而不被空闲连接回收器线程-->

  50. <property name="minEvictableIdleTimeMillis" value="10000"/>

  51. <property name="validationQuery" value="SELECT SYSDATE FROM DUAL"/>

  52. </bean>

  53.  
  54. <!-- sqlSessionFactory -->

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

  56. <!-- 数据库连接池 -->

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

  58. <!-- 加载mybatis的全局配置文件 -->

  59. <!-- <property name="configLocation" value="classpath:sqlMapConfig.xml" /> -->

  60. <property name="mapperLocations">

  61. <list>

  62. <!-- 自动匹配Mapper映射文件 -->

  63. <value>classpath*:mybatis/*-mapper.xml</value>

  64. </list>

  65. </property>

  66. </bean>

  67.  
  68. <!-- mapper扫描器 -->

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

  70. <!-- 扫描包路径,如果需要扫描多个包,中间使用半角逗号隔开 -->

  71. <property name="basePackage" value="com.ali77.mapper"></property>

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

  73. </bean>

  74.  
  75. </beans>


##----jdbc.properties

 
  1. #数据库属性配置

  2. jdbc.driverClass=oracle.jdbc.driver.OracleDriver

  3. #jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl

  4. jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl

  5. jdbc.username=capricornce

  6. jdbc.password=xxxxxxxx

  7. jdbc.initialSize=30

  8. jdbc.maxActive=150

  9. jdbc.maxIdle=20

  10. jdbc.minIdle=5

  11. jdbc.minPoolSize=2

  12. jdbc.maxPoolSize=20

  13. jdbc.checkoutTimeout=3000

  14. jdbc.maxStatements=50

  15. jdbc.testConnectionOnCheckin=true

  16. jdbc.idleConnectionTestPeriod=18000


##----springmvc.xml

 
  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" xmlns:mvc="http://www.springframework.org/schema/mvc"

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

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

  6. xsi:schemaLocation="http://www.springframework.org/schema/beans

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

  8. http://www.springframework.org/schema/mvc

  9. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

  10. http://www.springframework.org/schema/context

  11. http://www.springframework.org/schema/context/spring-context-3.2.xsd

  12. http://www.springframework.org/schema/aop

  13. http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

  14. http://www.springframework.org/schema/tx

  15. http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "

  16. >

  17. <!-- 配置处理器,决定了Controller的实现方式 -->

  18. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

  19. <!-- 配置映射器,决定了如何将客户端的请求映射到对应的Controller -->

  20. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

  21. <!-- 配置视图解析器,控制如何生成响应给客户端 -->

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

  23. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>

  24. <property name="prefix" value="/WEB-INF/jsp/"></property>

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

  26. </bean>

  27. <!-- 配置default-servlet-handler,避免controller本该跳转的页面又当做请求发出-->

  28. <mvc:default-servlet-handler/>

  29. </beans>

继续,java代码。。。

##----UserActionController

 
  1. package com.ali77.controller;

  2.  
  3. import java.util.List;

  4. import java.util.Map;

  5.  
  6. import javax.servlet.http.HttpServletRequest;

  7.  
  8. import org.springframework.beans.factory.annotation.Autowired;

  9. import org.springframework.stereotype.Controller;

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

  11.  
  12. import com.ali77.service.UserService;

  13.  
  14.  
  15. @Controller

  16. @RequestMapping("user")

  17. public class UserActionController {

  18. //自动注入

  19. @Autowired

  20. private UserService userService;

  21. @RequestMapping("show_user")

  22. public String showUser(HttpServletRequest req) {

  23. //获取所有用户信息,这里偷懒,下一行只取一个

  24. List<Map<String, Object>> list = userService.listUsers();

  25. //获取第一个用户信息

  26. Map<String, Object> map = list.get(0);

  27. req.setAttribute("user_name", map.get("USER_NAME"));

  28. req.setAttribute("user_password", map.get("USER_PASSWORD"));

  29. return "main";

  30. }

  31. }


##----UserMapper

 
  1. package com.ali77.mapper;

  2.  
  3. import java.util.List;

  4. import java.util.Map;

  5.  
  6. import org.springframework.stereotype.Repository;

  7. @Repository

  8. public interface UserMapper {

  9. List<Map<String, Object>> listUsers();

  10. }


##----UserService

 
  1. package com.ali77.service;

  2.  
  3. import java.util.List;

  4. import java.util.Map;

  5.  
  6. public interface UserService {

  7. List<Map<String, Object>> listUsers();

  8. }


##----UserServiceImpl

 
  1. package com.ali77.service.impl;

  2.  
  3. import java.util.List;

  4. import java.util.Map;

  5.  
  6. import org.springframework.beans.factory.annotation.Autowired;

  7. import org.springframework.stereotype.Service;

  8.  
  9. import com.ali77.mapper.UserMapper;

  10. import com.ali77.service.UserService;

  11. @Service

  12. public class UserServiceImpl implements UserService {

  13. @Autowired

  14. UserMapper userMapper;

  15. @Override

  16. public List<Map<String, Object>> listUsers() {

  17. List<Map<String, Object>> users = userMapper.listUsers();

  18. for (Map<String, Object> user : users) {

  19. String password = user.get("USER_PASSWORD").toString();

  20. //给密码“加密”,返回给页面

  21. if(password.length() > 6) {

  22. //密码大于6位,除去首尾字符外,全部替换成*

  23. String star = "";

  24. for (int i = 0; i < password.length() - 2; i++) {

  25. star += "*";

  26. }

  27. password = password.charAt(0) + star + password.charAt(password.length() - 1);

  28. } else {

  29. //密码小于6位,全部替换成*

  30. password = password.replaceAll(".", "*");

  31. }

  32. user.put("USER_PASSWORD", password);

  33. }

  34. return users;

  35. }

  36.  
  37. }

至此代码部分全部完成,剩下的数据库结构非常简单:第一个字段是number,后面是varchar2



 

最终效果图:

点击超链接:

好了,项目至此完成。

特别说明:写程序要灵活,不要全部抄过去,结果发现不行,一看,数据库用户名密码还是作者本人的,没有改。。。或者说,这个项目一点没改去跑mysql数据库,都是不可取的。如果遇到一般性报错多百度,谁也不能保证程序在哪儿里能都跑通,鬼知道我搭建项目的时候,百度了多少问题,报错,说明我还是比较菜的。。。

下面放上项目的链接

http://download.csdn.net/download/capricornce/10106948,里面内容如下:

可以把ssm_sample,直接导入到eclipse里面,如果报错,这样改一下,就是重新配置一下环境,包括换jdk啊,换tomcat版本啊


猜你喜欢

转载自blog.csdn.net/LRXmrlirixing/article/details/82048246