Maven的依赖范围:
用于指定maven在哪个生命周期范围内有效,我们平时开发项目,需要将jar导入classpath中
maven为我们提供了三种classpath: 编译 测试 运行
在scope标签中通过<score></score>配置
score有6种:
1.compile:编译 测试 运行都有效
2.provided:在编译和测试有效,运行无效
3.runtime:在测试和运行有效,编译期间无效 如:jdbc的驱动类
4.test:只在测试范围有效 如: junit单元测试
5.system: 在编译和测试有效,但与本机系统关联,可移植性差
6.import:导入的依赖范围,它只使用在dependencyManagement中,表示从其它pom中导入
Model: 模型,存放实体类(对应数据库表中的实体类)
Dao: 数据访问层,主要做数据库的交互工作,把数据库中的数据永久的保存在硬盘中.
Service:管理具体的功能(做相应的业务逻辑处理),Action只负责管理,Service负责实施
Action: 控制器,管理业务调度和管理跳转的.
从这里可以跳转到Service层,调用Service中的方法,可以对前端请求进行业务逻辑处理
Struts:控制界面和Action之间的关系
Hibernate: 连接数据库操作,用的的Hibernate完成增删改查
1)将html文件转化为jsp文件
<% page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>2)导入jsp标签库
<%@ taglib prefix="s" uri = "/struts-tags"%>3)用 <s:text name = " "></s:text>标签
<s:text name = "loginName"></s:text> <input type = "text" id = "mAccount" placeholder = '<s:text name = "loginName"></s:text>'>4)使用a标签
<a href="aa.action?request_locale=zh_CN"><s:text name="chinese"></s:text></a> <a href="aa.action?request_locale=en_US"><s:text name="english"></s:text></a>步骤:
1).部署好秒滴云第三方短信验证码接口 类名: IndustrySMS.
2). 员工忘记密码,通过账户名修改密码
2.1将账户名保存在session中
session.setAttribute("maccount",maccount);
2.2获取随机验证码并保存在session中
String verifyCode = IndustrySMS.getRandomNum(6);
session.setAttribute("verifyCode", verifyCode);
// 获取短信验证码
IndustrySMS.execute(manager.getMphone( ),verifyCode);
3)修改密码
//获取保存在session中的maccount和verifyCode
String maccount = (String) session.getAttribute("maccount");
String verifyCode = (String) session.getAttribute("verifyCode ");
4)当前端输入的验证码跟获取到的验证码一致时,修改密码
1)将顾客信息保存在session中,以便在修改顾客头像时使用.
session.setAttribute("custom",custom);
2)修改顾客头像
2.1获取前端传递过来的文件的种类
String fileType = file.getContentType().substring(0,5);
2.2得到要保存文件的相对路径
Strring path1 = session.getServletContext().getRealPath("/images");
2.3获取前端传递过来的文件名称
String path2 = file.getOriginalFilename();
2.4将相对路径和文件名拼接
String path = path1 + path2;
2.5将文件复制到目标路径下(存入服务器)
file.transferTo(new File(path));
2.6获取保存在session中的顾客信息
Custom custom = (Custom) session.getAttribute("custom");
2.7获取顾客账号
String caccount = custom.getCaccount();
2.8根据顾客账号修改顾客头像
map = managerService.updatecImg("images/"+path2,caccount);
Entity: 模型,存放实体类(对应数据库表中的实体类)
Dao: 数据访问层,主要做数据库的交互工作,把数据库中的数据永久的保存在硬盘中.
Service:管理具体的功能(做相应的业务逻辑处理),Controller只负责管理,Service负责实施
Controller: 控制器,管理业务调度和管理跳转的.
从这里可以跳转到Service层,调用Service中的方法,可以对前端请求进行业务逻辑处理
Mybatis: @MapperScan指定要扫描mapper类的包的路径
基于注解的映射方式,实现对数据的增删改查,将sql语句写下注解的括号中
@Update @Select
@Inser @Delete
<!-- 映射文件的导入 --> <!--注解的使用:在mybatis的配置文件中注册这个映射接口(注意是class) --> <mappers> <mapper class="com.yangsheng.dao.ManagerDao"/> </mappers>Restful:符合REST约束风格和原则的应用程序或设计
HTTP的请求动作一般分为四种:
1)GET: 获取资源
2)POST: 添加资源
3)PUT: 修改资源
4) DELETE: 删除资源
前端的请求只能是GET或POST,所以需要将POST请求转化为PUT或者DELETE.
通过HiddenHTTPMethodFilter进行转化.
在前端发起请求时,添加一个参数 _method,将此参数的值指定为请求路径PUT/DELETE.
<form action = "testPut" method = "POST"> <input type = "hidden" name = "_method" value = "PUT"> <input type = "submit" value = "PUT"> </form>1)Entiry:
在各自的实体中分别写和对方相关联的属性
2)在方表中增加一个字段作为外键,此外键是和一方的主键关联
3)Mybatis一方的配置文件中resultMap中
<collecation property = "集合的属性名" ofType = "集合元素的类型"></collecation>
多方的配置文件中的resultMap中
<association property = "一方的属性名" javaType = "属性类型" ></association>
通过拦截器获取客户机信息
(请求的URL地址, 请求的资源, 请求的URL地址中附带的参数,来访者的IP地址,来访者的主机名
使用的端口号,请求使用的方法,获取WEB服务器的IP地址,获取WEB服务器的主机号)
public class LoginInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub HandlerInterceptor.super.afterCompletion(request, response, handler, ex); }视图:
创建一张虚拟的表,本质上是对基表的一条select查询语句
作用:
简化复杂的查询语句 限制数据访问
例如:
create or replace view view_myemp_20 as select * from myemp where deptno = 20;
索引: 允许直接访问数据表中某一行记录的树形结构,主要作用是为了提高查询效率
索引一般是基于表中经常要查询的某一列来创建
create unique index 索引名 on 表名(字段名)
触发器(可以看成是监听器)
数据库中于表相关的存储的一段PL/SQL程序,主要作用是用于监听表中的DML操作.
例如:
创建一个触发器,每当向myemp中插入一个新员工时,控制台会自动打印'成功插入员工'
create or replace trigger trigger_savenewemp
after insert on myemp
declare
begin
dbms_output.put_line('成功插入员工')
end;
/
触发器的使用场景:
1.复杂的安全性检查
2.数据的确认
3.数据库的审计
4.数据库的备份和同步
存储过程:
数据库中的一组提前编译的PL/SQL语句程序语句集
其中可以对数据一些通用复杂操作进行封装,只需要编译一次,以后每次执行不需要重复编译
可以反复调用,减少工作量
创建存储过程:打印helloword
create or replace procedure sayHello
AS
begin
dbms_output_line('helloworld')
end;
/
调用存储过程
begin
begin sayHello();
end;
/