javaweb22/4/10
JavaBean
即实体类,一般用来和数据库的字段做映射,JavaBean有特定的写法:
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法,
ORM:对象关系映射
- 表-->类
- 字段-->属性
- 行-->对象
 例如:people表
| id | name | age | sex | 
|---|---|---|---|
| 1 | 张三 | 20 | 男 | 
| 2 | 李四 | 19 | 女 | 
| 3 | 王五 | 18 | 女 | 
  class people{
    private int id,age;
    private String name;
    private String sex;
}
  Class A{
    People name = new People(1,"张三",20,"男")
  }
jsp<useBean 标签
用jsp标签创建对象
1.创建实体类有四个参数
2.用jsp标签创建对象
<body>
<jsp:useBean id="people" class="com.wenping.pojo.People"/>
<jsp:setProperty name="people" property="id" value="1"/>
<jsp:setProperty name="people" property="name" value="张三"/>
<jsp:setProperty name="people" property="age" value="20"/>
<jsp:setProperty name="people" property="sex" value="男"/>
<jsp:getProperty name="people" property="id"/>
<jsp:getProperty name="people" property="sex"/>
<jsp:getProperty name="people" property="age"/>
<jsp:getProperty name="people" property="name"/>
</body>
MVC三层架构
什么是mvc:Model View Controller 模型视图控制器,
三层架构是指:视图层 View、服务层 Service,与持久层 Dao。它们分别完成不同的功能。
View 层:用于接收用户提交请求的代码在这里编写。
Service 层:系统的业务逻辑主要在这里完成。
Dao 层:直接操作数据库的代码在这里编写。
Servlet和jsp都可以写java代码;为了便于维护和使用,Servlet专注于处理请求,以及控制视图跳转,jsp专注于显示数据
Bean层实体类,Dao层操作数据库
过滤器Filter
开发人员通过Filter技术,能够实现对所有Web资源的管理,如实现权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
过滤器应用
1.编写过滤器
public class CharacterEncodingFilter implements Filter {
    //web服务器开启时初始化
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("CharacterEncodingFilter初始化");
    }
    //web服务器关闭时销毁
    @Override
    public void destroy() {
        System.out.println("CharacterEncodingFilter销毁");
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        //处理编码问题
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        //chain是链,是指有链请求和响应才会继续传递
        System.out.println("之前");
        //当一个filter收到请求的时候,调用chain.doFilter才可以访问下一个匹配的filter,
        // 若当前的filter是最后一个filter,调用chain.doFilter才能访问目标资源
        chain.doFilter(request,response);
        System.out.println("之后");
    }
}
2.编写Servlet类
3.在xml文件中注册filter与servlet
<servlet>
    <servlet-name>ServletTest</servlet-name>
    <servlet-class>com.wenping.filter.ServletTest</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletTest</servlet-name>
    <url-pattern>/servletTest</url-pattern>
    
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ServletTest</servlet-name>
    <url-pattern>/show</url-pattern>
  </servlet-mapping>
  
  <filter>
    <filter-name>filter</filter-name>
    <filter-class>com.wenping.filter.CharacterEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>filter</filter-name>
    <url-pattern>/servletTest/*</url-pattern>
  </filter-mapping>
监听器listener
Listener监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。
监听器的作用是,监听某种事物的变化,然后通过回调函数,反馈给客户(程序)去做一些相应的处理。
监听器实现在线人数查看
1.编写一个监听器类
public class OnlineListener implements HttpSessionListener {
    //创建session监听
    //一旦创建session就会触发一次这个事件
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println(se.getSession().getId());
        ServletContext servletContext = se.getSession().getServletContext();
        Integer onlineCount = (Integer) servletContext.getAttribute("onlineCount");
        if (onlineCount==null){
            onlineCount=new Integer(1);
        }else {
            int count = onlineCount.intValue(); //装箱拆箱
            onlineCount=new Integer(count+1);
        }
        servletContext.setAttribute("onlineCount",onlineCount);
    }
    //销毁session监听
    //一旦销毁session就会触发一次这个事件
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext servletContext = se.getSession().getServletContext();
        Integer onlineCount = (Integer) servletContext.getAttribute("onlineCount");
        if (onlineCount==null){
            onlineCount=new Integer(0);
        }else {
            int count = onlineCount.intValue(); //装箱拆箱
            onlineCount=new Integer(count-1);
        }
        servletContext.setAttribute("onlineCount",onlineCount);
    }
}
2.xml中注册监听器
<listener>
    <listener-class>com.wenping.listener.OnlineListener</listener-class>
  </listener>
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号