9. JavaBean
实体类
JavaBean有特定的写法:
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法
一般用来和数据库的字段做映射 ORM;
ORM:对象关系映射
- 表对应类
- 字段对应属性
- 行记录对应对象
people表
id | name | age | address |
---|---|---|---|
1 | 一号 | 12 | hs |
2 | 二号 | 13 | da |
3 | 三号 | 14 | fa |
class People{
private int id;
private String name;
private String address;
}
对象和表,行和数据,一 一对应。
10. MVC三层架构
什么是MVC:Model view Controller
由于Servlet和JSP都可以写java代码,为了易于维护和使用:
Servlet:专注于处理请求,以及控制各种请求
JSP:专注于展示数据
Controller(控制器):
- 相当于Servlet
- 交给业务层去完成
- 响应给客户端内容
- 视图跳转
view(视图):
- 相当于JSP
- 展示数据模型
- 可以提供我们的操作请求
Model( 模型):
- 控制业务操作
- 保存数据
- 修改数据
- 删除数据
- 查询数据
10.1 三层架构
Model:
- 业务处理(Service)
- 数据持久层CRUD(Dao)
View:
- 展示数据
- 提供连接发起Servlet请求
Controller:
- 接收用户请求
- 交给业务层处理对应的代码
- 控制视图跳转
11. Filter
Filter:过滤器,用来过滤网站的数据
- 处理中文乱码
- 登陆验证
开发步骤:
-
导包
-
编写过滤器(不要选错包了哦)
public class filter 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 { //chain:链 /* 1.过滤器中的所有代码,在过滤特定请求的时候都会执行 2.必须要让过滤器继续同行 filterChain.doFilter(servletRequest,servletResponse);//让我们的请求继续写, */ servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html;charset=UTF-8"); System.out.println("执行前"); filterChain.doFilter(servletRequest,servletResponse);//让我们的请求继续写, System.out.println("执行后"); } @Override public void destroy() { System.out.println("结束了"); } }
-
配置xml
<filter> <filter-name>filter</filter-name> <filter-class>com.Yurrize.filter.filter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/servlet/*</url-pattern> </filter-mapping>
12. 监听器
实现一个监听器接口(n种监听器,了解即可)
-
编写一个监听器
//在线人数监听,统计网站在线人数,统计session public class OnlineCountListener implements HttpSessionListener { @Override //创建session监听 //一旦创建一个session就会触发一次这个监听器 public void sessionCreated(HttpSessionEvent httpSessionEvent) { System.out.println(httpSessionEvent.getSession().getId()); ServletContext context = httpSessionEvent.getSession().getServletContext(); Integer attribute = (Integer) context.getAttribute(" OnlineCount"); if(attribute==null){ attribute=new Integer(1); } else { int count=attribute.intValue(); attribute=new Integer(count+1); } context.setAttribute("OnlineCount",attribute); } @Override //销毁session监听 //一旦销毁一个session就会触发一次这个监听器 public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { ServletContext context = httpSessionEvent.getSession().getServletContext(); Integer attribute = (Integer) context.getAttribute(" OnlineCount"); if(attribute==null){ attribute=new Integer(0); } else { int count=attribute.intValue(); attribute=new Integer(count-1); } context.setAttribute("OnlineCount",attribute); } }
-
注册监听器
<listener> <listener-class>com.Yurrize.listener.OnlineCountListener</listener-class> </listener>