首先来说,三层架构与MVC的目标一致:都是为了解耦和、提高代码复用。MVC是一种设计模式,而三层架构是一种软件架构。
三层架构分为:表现层(UI)(web层)、业务逻辑层(BLL)(service层)、数据访问层(DAL)(dao层) ,再加上实体类库(Model)
1.实体类库(Model),在Java中,往往将其称为Entity实体类。数据库中用于存放数据,而我们通常选择会用一个专门的类来抽象出数据表的结构,类的属性就一对一的对应这表的属性。
·一般来说,Model实体类库层需要被DAL层,BIL层和UI层引用。
2.数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作
·DAL就是根据业务需求,构造SQL语句,构造参数,调用帮助类,获取结果,DAL层被BIL层调用
3.业务逻辑层(BLL)
·BLL层好比是桥梁,将UI表示层与DAL数据访问层之间联系起来。所要负责的,就是处理涉及业务逻辑相关的问题,比如在调用访问数据库之前,先处理数据、判断数据。
(67条消息) Java Web中过滤器和监听器重点总结_妖精小狗的博客-CSDN博客_过滤器和监听器
过滤器写过滤器程序
import javax.servlet.*;
import java.io.IOException;
public class Cfilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//和服务器一同启动,随时准备过滤
System.out.println("已经初始化了");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/heml;charset=UTF-8");
servletRequest.setCharacterEncoding("UTF-8");
System.out.println("进入了过滤器");
filterChain.doFilter(servletRequest, servletResponse);//让请求继续走下去
System.out.println("过滤器执行后");
}
@Override
public void destroy() {
System.out.println("过滤器已经销毁了");
}
}
配置xml文件
showservelet com.wsy.servlet showservelet /servlet/show //一般都是多写一些过滤器 很少去/*这样请求太多了 showservelet /show EncodingFilter com.wsy.Cfilter EncodingFilter /servlet/show
监听器
public class Listener implements HttpSessionListener {
@Override
// Idea快捷键Ctrl + O 来重写方法
public void sessionCreated(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
Integer olineCount = (Integer)ctx.getAttribute("OlineCount");
if(olineCount == null){
olineCount = new Integer(1);
}else {
int cont = olineCount.intValue();
olineCount = new Integer(cont+1);
}
ctx.setAttribute("OlineCount", olineCount);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
Integer olineCount = (Integer)ctx.getAttribute("OlineCount");
if(olineCount == null){
olineCount = new Integer(0);
}else {
int cont = olineCount.intValue();
olineCount = new Integer(cont-1);
}
ctx.setAttribute("OlineCount", olineCount);
}
}
com.wsy.Listener



