【javaWeb】第49天—— WEB实战项目

回顾: 注解: 格式: @interface 注解名{} jdk中三个注解 自定义注解: 注解属性: 接口中的方法 类型: 基本类型 String Class Annotation Enum 以上类型的一维数组 若一个注解有属性,使用的时候的必须有值 元注解 @Retention 保留到那个阶段 source class runtime @Target 作用在那个部分上 type method filed 文件上传: servlet3.0 没有web.xml 内嵌文件上传功能 支持注解开发 ….

注解开发:
        @WebServlet(urlPatterns={"/demo1","/demo2"})
        @WebListener
        @WebFilter(urlPatterns={"/demo1","/demo2"})

文件上传要求
    浏览器要求
        1.提交方式post
        2.提供文件上传组件 input type="file"
        3.表单enctype属性的值 multipart/form-data
    servlet3.0服务器要求
        在servlet上添加注解 @MultipartConfig
        普通上传组件:
            request.getParameter()
        文件上传组件
            Part part=request.getPart(name值)
            获取文件的名称
                part.getHeader("content-disposition");然后截取就可以  
            获取文件的流
                part.getInputStream()
            对拷流
            删除临时文件
                part.delete()
    文件上传注意问题:
        文件重名:随机名称
        文件安全:
        文件目录:
            用户
            时间
            数量
            随机
/

动态代理: jdk中Proxy 前提:要求代理对象和被代理对象要实现接口

Object Proxy.newProxyInstance(ClassLoader loader,Class[] interfaces,InvoctaionHandler h);
        参数:
            ClassLoader loader:一般使用的被代理对象使用的loader  被代理对象.getClass().getClassLoader()
            Class[] interfaces:一般使用的被代理对象实现的所有接口 被代理对象.getClass().getInterfaces()
            InvoctaionHandler:接口 执行处理类
                里面有一个方法需要实现 
                    Object invoke(Object proxy,Method method,Object... args)
                    参数:
                        proxy:代理对象,不要使用
                        method:当前执行的方法
                        args:当前方法所需要的参数

商城的实体: 用户 订单 商品 分类 / 准备工作: 数据库和表 create database store28; use store28;

CREATE TABLE `user` (
      `uid` varchar(32) NOT NULL,
      `username` varchar(20) DEFAULT NULL,
      `password` varchar(100) DEFAULT NULL,
      `name` varchar(20) DEFAULT NULL,
      `email` varchar(30) DEFAULT NULL,
      `telephone` varchar(20) DEFAULT NULL,
      `birthday` date DEFAULT NULL,
      `sex` varchar(10) DEFAULT NULL,
      `state` int(11) DEFAULT NULL,
      `code` varchar(64) DEFAULT NULL,
      PRIMARY KEY (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
项目
    包结构
        com.itheima.web.servlet
        com.itheima.web.filter
        com.itheima.service         ---service 的接口
        com.itheima.service.impl    ---service 的实现类
        com.itheima.dao             ---dao的接口   
        com.itheima.dao.impl        ---dao的接口   
        com.itheima.domain
        com.itheima.utils
        com.itheima.constant

    jar包
        驱动
        c3p0
        dbuitls
        beanutils
        jstl
        邮件
    工具类和配置文件
        datasourceutils 和 c3p0配置文件
        uuidutils
        uploadutils
        md5uitls
        mailutils

    前台页面
        将页面拷贝到项目中

// 用户模块: 注册 发送邮件的方式发送激活码 激活 登录 退出

通用servlet设计

扩展: 使用算法加密密码 md5加密 不对称的加密,不可逆 在数据库中可以使用 md5(字段|值) java中api

电子邮箱:就是在邮件服务器上开启的一块空间 服务器:提供邮件服务 协议:规定数据的格式

发送邮件的协议:smtp
接受邮件的协议:pop / pop3    imap

/ 本地的服务器 : 邮件服务器 设置域名 store.com 新增几个账户 (普通用户) jack tom 新增一个管理员账户 service

.///

经验分享 程序员 微信小程序 职场和发展