0 JavaBean
属于实体类,有特定的写法:
- 必须有一个无参构造
- 属性必须私有化
- 必须有get和set方法
一般用来和数据库的表做映射
ORM:对象关系映射 - 表→类
- 字段→属性
- 行→对象
1 架构讲解
什么是MVC:Model、View、Controller,模型、视图、控制器
1.1 早期架构
用户直接访问控制层,控制层直接操作数据库,Servlet->CRUD->数据库,程序臃肿,不利于维护。
Servlet:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码
1.2 MVC三层架构
Model:
- 业务处理:业务逻辑(Service)
- 数据持久层:CRUD(Dao)
View:
- 展示数据
- 提供链接发起Servlet请求(a、form、img……)
Controller:
- 接受用户的请求:request(请求参数、Session信息等)
- 交给业务层处理相应的代码
- 控制视图跳转
以登录功能举例:
接受用户的登录请求->处理用户的请求(获取请求参数,username、password等)->交给业务层处理登录业务(判断用户名密码是否正确)->Dao层查询用户名和密码是否正确->数据库
2 过滤器
Filter:用来过滤网站的数据
- 处理中文乱码
- 登录验证……
Filter开发步骤:
- 导包
- 编写过滤器代码:
继承接口(注意得是Servlet下的Filter接口)
实现必须实现的方法,init、doFilter、destroy
在web.xml中配置filter
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化");
}
//chain:链
/*
1.过滤器中的所有代码,在过滤特定请求时都会执行
2.必须要让过滤器继续执行filterChain.doFilter()
*/
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
//servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=utf-8");
System.out.println("Filter执行前……");
filterChain.doFilter(servletRequest,servletResponse);//让请求继续走
System.out.println("Filter执行后");
}
public void destroy() {
System.out.println("CharacterEncodingFilter销毁");
}
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.songhc.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/servlet/show.do</url-pattern>
</filter-mapping>
3 监听器
- 实现监听器接口
- 重写方法
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
System.out.println(httpSessionEvent.getSession().getId());
Integer onlineCount = (Integer)servletContext.getAttribute("OnlineCount");
if (onlineCount == null) {
onlineCount = new Integer(1);
} else {
onlineCount = new Integer(onlineCount.intValue()+1);
}
servletContext.setAttribute("OnlineCount", onlineCount);
}
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
Integer onlineCount = ((Integer) servletContext.getAttribute("OnlineCount"));
if (onlineCount == null) {
onlineCount = new Integer(0);
} else {
onlineCount = new Integer(onlineCount.intValue()-1);
}
servletContext.setAttribute("OnlineCount", onlineCount);
}
- 在web.xml中注册
<listener>
<listener-class>com.songhc.listener.OnlineCountListener</listener-class>
</listener>