今天内容安排

1:复习mybatis

2:复习springMVC

3:springMVC+spring+mybatis组合起来,搭建一个web应用开发的框架

4:用户管理系统,针对用户的CRUD操作,前后端交互

  1. mybatis复习

  1. springmvc复习

spring-mvc

web.xml配置DispatcherServlet

{servlet-name}-servlet.xml(自己的配置文件)

扫描包<context:component-scan base-package="cn.itcast.mvc.controller"/>

注解驱动(配置了handlerMapping,HandlerAdatper)

<mvc:annotation-driven/>

视图解析器(org.springframework.web.servlet.view.InternalResourceViewResolver)

前缀(prefix)

后缀(suffix)

返回视图的形式===前缀+实体名称+后缀

需要文件上传--则配置文件上传代码

如果有自定义拦截器,需要进行配置 <mvc:interceptors>

注解的使用

类的注解

@Controller 表示当前类是一个Controller

@RequestMapping(value="访问路径")

方法的注解

@RequestMapping(value="路径",method="限定请求方法",params="限定请求参数")

@ResponseBody --- 表示返回的对象自动转换成json

@ResponseStatus设置相应的状体码(了解)

方法参数的注解

@RequestBody --- 接受json格式数据 可以是集合,可以是单个对象

@PathVariable()----接受路径中的占位符 /test/{itemid} 可以接受itemid

@RequestParam(value="传递参数的key'",required=是否必须传递该参数,defaultValue:如果没有传递参数的默认值) 接受请求参数

@CookieValue(value="cookieName") 可以直接从指定的cookie中获取数据

一些对象的接受

serlvet的内置对象(直接在方法中定义参数就可以获取到)

request

resposne

session

pojo对象

直接定义该对象就可以使用

集合

重新去定义一个对象,把集合变成对象中的一个属性,在方法的参数上,书写这个对象

拦截器

1、实现HandlerInterceptor

2、完成指定三个方法

preHandle(前置方法,返回类型,boolean,true继续向后执行,false,结束执行

后置方法:postHandle(执行完Handler之后)

完成方法afterCompletion() 如果该类的preHandler返回是true的时候,会执行

web.xml配置DispatcherServlet

{servlet-name}-servlet.xml(自己的配置文件)

扫描包<context:component-scan base-package="cn.itcast.mvc.controller"/>

注解驱动(配置了handlerMapping,HandlerAdatper)

<mvc:annotation-driven/>

视图解析器(org.springframework.web.servlet.view.InternalResourceViewResolver)

前缀(prefix)

后缀(suffix)

返回视图的形式===前缀+实体名称+后缀

需要文件上传--则配置文件上传代码

如果有自定义拦截器,需要进行配置 <mvc:interceptors>

注解的使用

类的注解

@Controller 表示当前类是一个Controller

@RequestMapping(value="访问路径")

方法的注解

@RequestMapping(value="路径",method="限定请求方法",params="限定请求参数")

@ResponseBody --- 表示返回的对象自动转换成json

@ResponseStatus设置相应的状体码(了解)

方法参数的注解

@RequestBody --- 接受json格式数据 可以是集合,可以是单个对象

@PathVariable()----接受路径中的占位符 /test/{itemid} 可以接受itemid

@RequestParam(value="传递参数的key'",required=是否必须传递该参数,defaultValue:如果没有传递参数的默认值) 接受请求参数

@CookieValue(value="cookieName") 可以直接从指定的cookie中获取数据

一些对象的接受

serlvet的内置对象(直接在方法中定义参数就可以获取到)

request

resposne

session

pojo对象

直接定义该对象就可以使用

集合

重新去定义一个对象,把集合变成对象中的一个属性,在方法的参数上,书写这个对象

拦截器

1、实现HandlerInterceptor

2、完成指定三个方法

preHandle(前置方法,返回类型,boolean,true继续向后执行,false,结束执行

后置方法:postHandle(执行完Handler之后)

完成方法afterCompletion() 如果该类的preHandler返回是true的时候,会执行

  1. ssm综合应用

  1. 创建工程---环境整理

    1. 使用技术

SpringMVC+Spring + Mybatis

数据库:mysql

前端:Jquery EasyUI

  1. 配置文件的编写

    1. spring配置文件

约束:

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

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

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

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

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

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

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

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

  1. 事务配置

  1. spring-mvc配置文件

  1. spring-mybatis配置文件

  1. mybatis-config配置

  1. web.xml

  1. 导入相关js

  1. 解决静态资源被拦截

  1. 查询用户列表

    1. controller

  1. 定义EasyUIResult

作用:定义easyui中的分页信息的bean对象,或者vo对象

package cn.itcast.usermanage.pojo;

import java.util.List;

public class EasyUIResult<?> {

private Integer total;

private List<?> rows;

public Integer getTotal() {

return total;

}

public void setTotal(Integer total) {

this.total = total;

}

public List<?> getRows() {

return rows;

}

public void setRows(List<?> rows) {

this.rows = rows;

}

}

  1. 编写userservice

  1. 编写userMapper

  1. 效果

  1. 访问路径方法合并

之前进行页面跳转的时候,如果有多个页面,就需要有多个方法。

借助于requetMapping(占位符的方式,传递一些数据,达到页面跳转的目的)

/user/to/user-list

可以取出user-list 这个内容, 作为视图的名字。 /web-inf/views/ user-list.jsp

  1. 导出excel

  1. controller的逻辑

  1. spring提供的excel视图实现

  1. 自定义excel 视图

public class UserExcelView extends AbstractExcelView {

/**

* 以下完成视图的渲染

*/

@Override

protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook,

HttpServletRequest request, HttpServletResponse response) throws Exception {

// 从model对象中获取userList

@SuppressWarnings("unchecked")

List<User> userList = (List<User>) model.get("userList");

// 创建Excel的sheet

HSSFSheet sheet = workbook.createSheet("会员列表");

// 创建标题行

HSSFRow header = sheet.createRow(0);

header.createCell(0).setCellValue("ID");

header.createCell(1).setCellValue("用户名");

header.createCell(2).setCellValue("姓名");

header.createCell(3).setCellValue("年龄");

header.createCell(4).setCellValue("性别");

header.createCell(5).setCellValue("出生日期");

header.createCell(6).setCellValue("创建时间");

header.createCell(7).setCellValue("更新时间");

// 填充数据

int rowNum = 1;

for (User user : userList) {

HSSFRow row = sheet.createRow(rowNum);

row.createCell(0).setCellValue(user.getId());

row.createCell(1).setCellValue(user.getUserName());

row.createCell(2).setCellValue(user.getName());

row.createCell(3).setCellValue(user.getAge());

String sexStr;

if (user.getSex() == 1) {

sexStr = "男";

} else if (user.getSex() == 2) {

sexStr = "女";

} else {

sexStr = "未知";

}

row.createCell(4).setCellValue(sexStr);

row.createCell(5).setCellValue(new DateTime(user.getBirthday()).toString(Constants.DATE));

row.createCell(6).setCellValue(new DateTime(user.getCreated()).toString(Constants.DATE_TIME));

row.createCell(7).setCellValue(new DateTime(user.getUpdated()).toString(Constants.DATE_TIME));

rowNum++;

}

// 设置相应头信息,以附件形式下载并且指定文件名

response.setHeader("Content-Disposition", "attachment;filename="

+ new String("会员列表.xls".getBytes(), "ISO-8859-1"));

}

}

  1. 定义视图对象到springmvc中

  1. 定义视图解析器(通过bean对象查找视图)

注意:在SpringMVC中,如果定义多个视图解析器,需要指定每个视图解析的顺序。

  1. 添加用户的实现

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id" keyColumn="id">

INSERT INTO tb_user (

id,

user_name,

password,

name,

age,

sex,

birthday,

created,

updated

)VALUES(

null,

#{userName},

#{password},

#{name},

#{age},

#{sex},

#{birthday},

NOW(),

NOW()

);

</insert>

  1. 日期对象的自动转换

  1. json转换的时候,忽略属性

使用 @JsonIgnore 完成某个属性忽略,不会转换成json。

SSM的更多相关文章

  1. 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程

    本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...

  2. springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪

    获取下载地址   QQ 313596790  A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技术:31359679 ...

  3. SSM项目搭建(提供源码)

    1创建web动态项目,项目结构截图 2.配置日志文件 #\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B log4j.rootLogger=INFO,Console,Fi ...

  4. activiti工作流的web流程设计器整合视频教程 SSM和独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  5. activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  6. SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  7. Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境【转】

    项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...

  8. java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化

    一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...

  9. SSM整合(三):Spring4与Mybatis3与SpringMVC整合

    源码下载 SSMDemo 上一节整合了Mybatis3与Spring4,接下来整合SpringMVC! 说明:整合SpringMVC必须是在web项目中,所以前期,新建的就是web项目! 本节全部采用 ...

  10. SSM整合(二):Spring4与Mybatis3整合

    上一节测试好了Mybatis3,接下来整合Spring4! 一.添加spring上下文配置 在src/main/resources/目录下的spring新建spring上下文配置文件applicati ...

随机推荐

  1. 聊聊数据库(MySql)连接吧,你真的清楚吗?

    前言 说到数据库连接,这个大家都很熟悉了.但是熟悉一般来自于下面三种情况 * 刚开始学编程的时候,老师就说用完的数据库连接一定要关闭,不然会有严重的后果. * 编程一段时间后,大家都说要用连接池来优化 ...

  2. Js-Html 前端系列--可伸缩菜单

    一个非常经典的Demo,自行开发可以扩展. <head> <title></title> <style type="text/css"&g ...

  3. 安装oracle11数据库时,先决条件都失败怎么处理?

    安装oracle11数据库时,先决条件都失败怎么处理?

  4. JS 多个参数的传递

    var link = $("<a/>", { href: '/StandardManagement/StandardActivitiesDetail?' + $.par ...

  5. eclipse集成配置JDK和Tomcat

    在eclipse中集成JDK和tomcat服务器方法很简单,我们可以在服务器上运行想要的东西.比如我们学习javaweb时就要用到. 工具/原料   eclipse,JDK,tomcat 方法/步骤 ...

  6. 【LeetCode】31. Next Permutation

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  7. maven初步入门demo

    Maven是跨平台的项目管理工具.作为Apache组织中的一个颇为成功的开源项目,主要服务于基于java平台的项目构建.依赖管理和项目信息管理. maven本身使用java开发而成,所以使用前确保电脑 ...

  8. mysql中You can't specify target table for update in FROM clause

    使用mysql在删除表中重复记录 delete from user where username in (select user name form(select username from user ...

  9. ORALCE 编译过程卡死解决方法。

    --摘自网易博客 术士 在对存储过程进行test的时候,没有完全停止,就又在另外一个窗口,对它进行修改而且进行编译,出现了卡死现象. 用PLSQL Developer 在session里,找到这条se ...

  10. 前端知识点-CSS相关知识点

    1.解释一下CSS的盒子模型? 回答一: a.标准的css盒子模型:宽度=内容的宽度+边框的宽度+加上内边具的宽度 b.网页设计中常听的属性名:内容(content).填充(padding).边框(b ...