JStudy Day19-Javaweb补充+SMBMS项目的搭建

今日学习

距离上次撰写学习文档已经有一个多月了,这一个月里没有写文档,但是也没有闲着。学完了Javaweb并将Mybatis和Spring都学了一遍,学到了有关框架的思想。截止今日,SSM框架整合中还剩下一个SpringMVC,然后当前企业开发非常热门框架——SpringBoot,也需要在接下来的两个月中进行深入的学习。
接下来将之前学到的,没有补充到文档中的,一一补充一下。

JavaWeb

监听器

GUI编程中常用

实现一个监听器的接口(有N种)

流程:编写一个监听器:

1、实现监听器接口:
public class OnlineCountListener implements HttpSessionListener {
    //创建Session监听:看你的一举一动
    //一旦创建一个Session,就会触发一次事件
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext sc = se.getSession().getServletContext();

        System.out.println(se.getSession().getId());

        Integer oc = (Integer) sc.getAttribute("OnlineCount");
        if (oc == null){
            oc = new Integer(1);
        }else{
            int count = oc.intValue();
            oc = new Integer(count + 1);
        }
        sc.setAttribute("OnlineCount",oc);
    }
    //销毁Session监听
    //Session销毁,就会触发一次事件
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext sc = se.getSession().getServletContext();
        System.out.println(se.getSession().getId());
        Integer oc = (Integer) sc.getAttribute("OnlineCount");
        if (oc == null){
            oc = new Integer(0);
        }else{
            int count = oc.intValue();
            oc = new Integer(count - 1);
        }
        sc.setAttribute("oc",oc);
    }
}
2、配置监听器(web.xml)
<listener>
    <listener-class>com.sea.listener.OnlineCountListenerlistener-class>
listener>

过滤器、监听器的常见应用

用户登录检测:

用户登录之后才能进入主页,注销之后就不能进入主页

1、用户登录之后向SESSION放入用户数据
    //获取前端请求的参数
    String username = req.getParameter("username");
    if (username.equals("admin")){//登陆成功
        req.getSession().setAttribute(Constant.USER_SESSION,req.getSession().getId());
        resp.sendRedirect("/sys/success.jsp");
    }else{//登陆失败
        resp.sendRedirect("/sys/error.jsp");
    }
}
2、进入主页的时候要判断用户是否已经登录:要求在过滤器中实现
public class SysFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        //ServletRequest里没有getSession方法 所以需要转换为HttpServletRequest

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        if (request.getSession().getAttribute(Constant.USER_SESSION) == null){
            response.sendRedirect("/error.jsp");
        }
        chain.doFilter(request,response);
    }

SMBMS(超市订单管理系统)项目搭建

详见博主另一篇文章

文件传输原理及介绍

1、准备工作

准备jar包

commons-fileupload-1.4
commons-io-2.10.0

2、文件上传注意事项(文件上传调优):

1、为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下
2、为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
3、要限制上传文件的最大值
4、可以限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法

三层架构(补充)

概念

三层架构:这种思想就是把软件分为三层,为了符合“高内聚,低耦合”的思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。

分层目的:

三层架构区分层次的目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。

三层架构是哪三层:

UI(表现层):

主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

BLL:(业务逻辑层):

UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

DAL:(数据访问层):

与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)

你可能感兴趣的:(java)