ssm详细整合案例

手把手教你入门SSM框架开发

关于项目

测试环境

后端:spring+mybatis+springmvc 
前端:bootstrap+Font Awesome图标集
测试环境:IDEA + tomcat8 + mysql5.7 + jdk8 + maven

项目功能

1. 实现用户登录功能
2. 实现客户信息的增删改查功能
3. 实现分页查询功能(使用PageHelper分页插件实现)

项目结构

.
├── README.md 
├── img  -- 放了一些README.md文档所需要的图片,没有实际意义
├── pom.xml
└── src
    └── main
        ├── java
        │   └── cn
        │       └── tycoding
        │           ├── controller  -- SpringMVC-WEB层控制器
        │           ├── mapper  -- Mybatis接口和映射文件。本项目采用了mybatis的接口开发,所以接口和映射文件放在同一目录下,并且名称相同。
        │           ├── pojo  -- JavaBean实体类
        │           └── service  -- service业务层
        ├── resources  -- maven项目存放配置文件的根目录(classpath:)
        │   ├── sys_schema.sql  -- 项目数据库创建和表创建的SQL语句
        │   ├── resource  -- 日志打印和数据源配置文件
        │   └── spring  -- spring和springmvc的配置文件
        └── webapp  -- 项目的根目录
            ├── WEB-INF
            ├── fonts  -- 字体的配置文件
            └── lib  -- 前端静态资源

整合思路

那么,接下来我们就需要了解如何在此基础上整合Mybatis框架。 首先须知Mybatis框架是一个持久层框架,而Spring MVC是WEB层框架,Spring框架则充当着业务层的角色。那么将三者联系起来正好组成了web--service--dao的三层架构体系。那么整合思路就如下所示了:

  1. 整合dao(即mapper),实现Mybatis和Spring的整合
  2. 整合service,由Spring管理service接口,在service中可以调用dao(mapper)
  3. 整合web(controller),实现Spring MVC和Spring的整合,在controller中调用service

需求实现

1. 实现用户登录功能

1.1 创建表结构

SQL语句请查看GitHub中resources目录下的.sql文件 除了创建表,我们同样要创建pojo对象,并提供属性setter和getter方法。(注意尽量保持pojo属性参数和表字段名称对应相等)

1.2 编写Controller层

@RequestMapping(value = "/login")
public String login(@RequestParam String username,@RequestParam String password, Model model) {
    User user = userService.login(username);
    if (user != null) {
        if (user.getPassword().equals(password)) {
            //登录成功
            return "page/page";
        } else {
            model.addAttribute("message", "登录失败");
            return "page/loginInfo";
        }
    } else {
        model.addAttribute("message", "你输入的用户名或密码有误");
        return "page/loginInfo";
    }
}

注意

  • @RequestMapping标注login()方法有两个作用(前提是必须在XML中开启注解扫描<context:component-scan/>):1.表示该方法是请求处理方法;2.指明了该方法的请求路径。

  • @RequestMapping可以标记类或方法,分别表示了不同层级的请求路径。例如当前的login()方法的请求路径应为:localhost:8080/xxx/login.do(需要注意的是:本例中使用了IDEA开发工具,访问其部署到Tomcat上的项目默认是不加项目名的,但是使用eclipse访问项目可能默认需要加上项目名,具体要看实际开发工具中对Tomcat的配置)

  • 对于请求体中包含多个参数的情况,我们尽量用@RequestParam注解标记参数,以免出现未知错误(但这不是必须的)。@RequestParam注解能帮助识别请求体中的参数,比如请求体中传递的参数名是id,但是你用int uid接收就可能会报错400(请求参数错误),这时我们使用@RequestParam("id")就能帮助Spring装配这个参数。

用户登录,我们首先获取到用户登录的用户名username和密码password,然后根据用户名查询并返回,根据此用户名查询到的密码与登录的密码进行equals,如果相等就登录成功。(当然我们要判断根据username查询后的返回值是否为null,不做判断会产生空指针问题,如果一个空值和另一个值相比显然会报错)。 如果登录成功,将返回到page/page.jsp页面(这是根据我们在springmvc.xml下配置的视图解析器InternalResourceViewResolver决定的);如果登录失败将返回到page/loginInfo.jsp页面。比如本项目中配置的视图解析器:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/"/>
	<property name="suffix" value=".jsp"/>
</bean>

只要在SpringMVC的配置文件中配置了这个选项,SpringMVC就默认匹配Controller层(用@Controller标识的类)中返回值为String类型的映射方法中return的数据和webapps/WEB-INF/xx.jsp中JSP页面的文件名,映射方法(用@RequestMapping标识的方法)return的值和/WEB-INF/下某个JSP页面文件名相同就跳转到这个页面,否者就报错404。当然除了使用@ResponseBody标识的方法和@RestController标识的类,因为这两个注解会将其下的方法返回值都转换为JSON 格式的数据,并且不会被InternalResourceViewResolver识别。

1.3 编写Mapper.xml

<select id="login" parameterType="String" resultType="User">
    select * from user where username = #{username}
</select>

我们使用了Mybatis的接口代理开发模式(保证接口和配置文件在同一目录下且名称相同),直接在Mapper.xml中编写原生sql语句,即可进行与数据库间的交互。其中:

  • id指明是哪个方法调用这个sql;

  • parameterType指定了接口传递的参数类型(我们根据用户名查询所以是String类型);

  • resultType指定该查询语句返回值的数据类型(因为我们已经在配置文件启用了别名配置<

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值