基于ssm框架的小例子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lu__peng/article/details/79114051

看了好几天的Spring和Mybatis了,现在试着写一个基于SSM(Spring,SpringMVC,Mybtis)的小例子。
写在前面:
例子比较简单:从浏览器发出一个请求,由DispatcherServle进行拦截,交给对应处理器进行处理(controller),接着调用service层方法进行具体的业务逻辑处理,期间会用到数据库中的数据,因此会通过dao层与数据库进行交互,与数据库交互借助于Mybatis框架进行。
项目的结构如图所示:
这里写图片描述
下面介绍具体步骤:
1在Spring框架中配置Mybatis
首先创建一个properties文件,用于存放数据库连接信息:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

在Spring配置文件中配置数据库连接信息,并指定Mybatis配置文件:

<!--spring-dao.xml-->
<!--加载外部的配置文件 -->
    <context:property-placeholder location="classpath:properties/connection.properties" />
    <bean id="datasource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"
        p:driverClassName="${jdbc.driver}"
        p:url="${jdbc.url}"
        p:username="${jdbc.username}"
        p:password="${jdbc.password}" />

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
    p:dataSource-ref="datasource"
    <!--指定Mybatis配置文件-->
    p:configLocation="classpath:mybatis/mybatis-conf.xml"/>
<bean id="sessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg ref="sqlSessionFactory" />
</bean>

2配置Mybatis
由于数据连接信息已经在spring配置文件中配置过了,所有mybatis配置文件中无须再次配置,只需要在配置文件中指定mybatis映射文件即可(当然,需要需要进行额外配置如等等,还是可以进行配置,本例比较简单,没有额外配置信息)

<configuration>
    <mappers>
        <mapper resource="mybatis/mapping/sql.xml" />
    </mappers>
</configuration>

配置mybatis映射文件,在mybatis映射文件中,主要预定义Sql语句,本例子中仅定义一条sql语句,如下所示:

<!--主要namespace不可少-->
<mapper namespace="mybatis.mapping.sql" >
    <select id="select" parameterType="String" resultType="com.guluo.user.User">
        SELECT * FROM user WHERE name=#{name};
    </select>
</mapper>

3 业务逻辑处理
首先定义个处理器,用于对对应请求进行处理,这里讲拦截器拦截到的/user/login.html交给处理器中的login方法进行处理:

@Controller
@RequestMapping(value = "/user")
public class RequestController {

    @Autowired
    private LoginService loginService;

    @RequestMapping(value = "/login")
    public void login(User user){
        System.out.println("正在执行controller方法");
        if(loginService.isSuccess(user)){
            System.out.println("登录成功");
        }else {
            System.out.println("登录失败");
        }
    }
}

User类比较简单,就是一个java bean,仅仅定义了id,name,age三个元素,与数据库中的表user对应。
在处理请求过程中中,会调用service层的方法进行具体的业务逻辑处理:

@Service
public class LoginService {

    @Autowired
    private SelectUser selectUser;

    public boolean isSuccess(User user){
        System.out.println("service:正在处理业务逻辑!!!");
        User user_database = selectUser.select(user.getName());
        if(user_database == null){
            return false;
        }else{
            return true;
        }
    }
}

在service层处理具体业务逻辑时,需要数据库中的数据信息,因此,需要调用dao层的方法。

@Service("select")
public class SelectUser {
    @Autowired
    private SqlSessionTemplate sqlSessionTemplate;

    public User select(String name){
        System.out.println("正在与数据库进行交互");
        return sqlSessionTemplate.selectOne("mybatis.mapping.sql.select",name);
    }
}

因为controller、service、dao都是通过注解进行定义的,因此需要在spring配置文件中,对这些通过注解定义的bean进行扫描,以便于在spring容器中产生对应的bean:

<!--spring-dao.xml-->
<context:component-scan base-package="com.guluo.dao" />
<!--spring-service.xml-->
<context:component-scan base-package="com.guluo.service" />
<!--spring-view.xml-->
<context:component-scan base-package="com.guluo.control" />

4配置视图解析器

<!--spring-view.xml-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/view/"
          p:suffix=".jsp" />

ps:实际上,在本例子中,我没有定义视图层的元素,通过在控制台中输出数据,来进行验证的。
5修改web.xml文件
配置拦截器,以及配置在容器启动时,去指定位置加载spring配置文件,如下:

<servlet>
    <servlet-name>ssm</servlet-name>
    <!--配置拦截器-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <!--去指定位置加载spring配置文件-->
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/*</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>ssm</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

6 验证
将工程部署到Tomcat上,在浏览器中输入localhost:8080/user/login.html?name=guluo&&age=24,控制台中会出现如下结果:

正在执行controller方法
service:正在处理业务逻辑!!!
正在与数据库进行交互
登录成功

结束

猜你喜欢

转载自blog.csdn.net/lu__peng/article/details/79114051