1、接口 实现类
2、JSP中一共有三种Scritplet代码
第一种:<%%>:在此Scriptlet中可以定义局部变量、编写语句
第二种:<%!%>:在此Scritplet中,可以定义全局变量、方法、类
第三种:<%=%>:用于输出一个变量或一个具体内容
3、mybaits学习
分析模型
1)多模块,每张表记录的内容,每张表数据字段的设置。
2)表与表的关系,外键关系(数据库级别)
3)表与表之间的业务关系(在某种业务意义基础分析)
用户表
记录购买商品的用户
订单表
记录了用户创建的订单,购买商品的订单。
use_id 外键
订单明细表
记录订单详细信息,购买商品的信息。
order_id 外键
item_id 外键
商品信息表
记录了商品信息
有外键的子表与之对应的是父表。 子表指向父表。
一对多在多地一方创建外键关系。
4、上传图片
添加上传图片的bean
在tomcat中配置虚拟目录或图片服务器
文件解析器
5、分页
// 分页 // allCount = 总记录数据, pageSize = 每页记录数 // pageCount = 共多少页 curentPage = 当前页 // startNum 开始记录数据 // (pageSize * curentPage)+ 1 ,pageSize *(curentPage + 1) // select Count(*) as num from student tempNum = allCount%pageSize; if (allCount > 0) { if (tempNum == 0) { pageCount = allCount / pageSize } else{ pageCount = (allCount / pageSize) + 1; } } if (curentPage <= 0) { curentPage = 1; } else if (curentPage > pageCount) { curentPage = pageCount; } startNum = (curentPage - 1) * pageSize // select * from student limit + startNum , pageSize;
6、spring mvc
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找 Handler
可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析
根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染
视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果
1、applicationContext-dao.xml
配置: 数据源 SqlSessionFactory mapper扫描器
2、创建applicationContext-service.xml,文件中配置service。
3、applicationContext-transaction.xml
在applicationContext-transaction.xml中使用spring声明式事务控制方法。
4、springmvc.xml
配置处理器映射器、适配器、视图解析器。
7、spring bean 配置
1、IOC反转 系统帮我new
<!-- 定义bean --> <!-- name是名字 class 对应的类 --> <!-- userAction 表示 org.ssm.spring.action.UserAction --> <bean name="userAction" class="org.ssm.spring.action.UserAction"> <!-- constructor 构造方法 --> <!-- ref 注入的意思 --> <constructor-arg name="dao" ref="userDAO"></constructor-arg> </bean> <!-- userDAO 表示 org.ssm.spring.dao.UserDAO --> <bean name="userDAO" class="org.ssm.spring.dao.UserDAO"></bean>
<!-- 定义bean --> <!-- name是名字 class 对应的类 --> <!-- userAction 表示 org.ssm.spring.action.UserAction --> <bean name="userAction" class="org.ssm.spring.action.UserAction"> <!-- constructor 构造方法 --> <!-- ref 注入的意思 --> <!-- <constructor-arg name="dao" ref="userDAO"></constructor-arg> --> <!-- 设值注入 --> <!-- 注入类 不使用value 使用 ref --> <property name="dao" ref="userDAO"></property> </bean> <!-- userDAO 表示 org.ssm.spring.dao.UserDAO --> <bean name="userDAO" class="org.ssm.spring.dao.UserDAO"></bean> <property name="dao" ref="userDAO"></property>
//定义dao private UserDAO dao; // //构造函数 // public UserAction(UserDAO dao) { // //dao = new UserDAO(); // this.dao = dao; // } //不使用 构造函数 使用 set方法 public void setDao(UserDAO dao) { this.dao = dao; }
以上是构造函数和属性注入两种方式
8、代理类
代理类继承实现类、再在里添加日志,校验。