发表于: 2017-04-09 00:41:30

1 1526


今天完成的事情:

Web.xml 详解:

context:

作用:用来声明应用范围(整个web项目)内的上下文初始化参数。

param-name 上下文参数名称,唯一标示。

param-value 设定的参数名称的值。

  • 初始化过程:
    1. 1.在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener><contex-param>
    2. 2.接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。
    3. 3.接着容器会将读取到<context-param>转化为键值对,并交给ServletContext
    4. 4.容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。
    5. 5.在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。
    6. 6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。
    7. 重点:初始化过程可知容器对于web.xml的加载过程是context-param >> listener  >> fileter  >> servlet

    8. filter:
    9. 作用:用于指定WEB容器的过滤器,在请求和响应对象在Servlet处理之前和之后,可以通过此过滤器对这两个对象进行处理。
    10. filter-calss 中指定的过滤器类必须继承javax.servlet.Filter具有以下三种方法:
    11. init(FilterConfig filterConfig):初始化,一般情况下时读取配置文件中的init-param参数值,如:filterConfig.getInitParameter("encoding")
    12. doFilter(...):用于对request,response进行处理,并能过chain.doFilter(....)交过下一个控制器
    13. destroy():资源销毁。

    14. Listener:
    15. 作用:可以收到事件什么时候发生以及用什么作为响应的通知。事件监听程序在建立、修改和删除会话或servlet环境时得到通知。常与context-param联合使用。
    16. listen-class 指定监听类:该类继承ServletContextListener 包含初始化方法contextInitialized(ServletContextEvent event) 和 销毁方法contextDestoryed(ServletContextEvent event).
    17. 重点---Servlet:
    18. DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:

      1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;

      2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);

      3、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);

      4、通过ViewResolver解析逻辑视图名到具体视图实现;

      5、本地化解析;

      6、渲染具体的视图等;

      7、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

    19. 总结:DispatcherServlet主要负责流程的控制。
    20. load-on-startup表示启动容器时初始化该Servlet;

      url-pattern表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。

    21. servlet.xml 暂时这些,还有一些细节没有深究。


Log4j:日志工具包



用 Mybatis 实现了CRUD

package com.mybatis.test;

public class User {
    public int id;
    public String userName;
    public int userAge;
    public String userAddress;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getUserAge() {
        return userAge;
    }

    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }

    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }
    
    @Override
    public String toString() {
        return this.userName+" "+this.userAge+" "+this.userAddress;
    }

}

package com.mybatis.test;

import java.util.List;

public interface IUserOperation {
    public User selectUserByID(int id);
    public List<User>selectUsersByName(String userName);
    
    public void addUser(User user);
    
    public void updateUser(User user);
    
    public void deleteUser(int id);
}


package com.mybatis.test;

import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
 * 这里面的代码看不懂,特别是SQLSessionFactory
 *
 * @author Administrator
 *
 */
public class Test {
    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;

    static {
        try {
            reader = Resources.getResourceAsReader("Configuration.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static SqlSessionFactory getSession() {
        return sqlSessionFactory;
    }

    public void getUserByID(int userID) {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation = session.getMapper(IUserOperation.class);
            User user = userOperation.selectUserByID(userID);
            if (user != null) {
                System.out.println(user.getId() + ":" + user.getUserName() + ":" + user.getUserAddress());
            }
        } finally {
            session.close();
        }
    }

    public void getUserList(String userName) {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation = session.getMapper(IUserOperation.class);
            List<User> users = userOperation.selectUsersByName(userName);
            for (User user : users) {
                System.out.println(user.getId() + ":" + user.getUserName() + ":" + user.getUserAddress());
            }
        } finally {
            session.close();
        }
    }

    /**
     * 增加后要commit
     */
    public void addUser() {
        User user = new User();
        user.setUserAddress("shahe");
        user.setUserName("weidake");
        user.setUserAge(18);
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation = session.getMapper(IUserOperation.class);
            userOperation.addUser(user);
            session.commit();
            System.out.println("新增用户ID:" + user.getId());
        } finally {
            session.close();
        }
    }

    /**
     * 修改后要commit
     */
    public void updateUser() {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation = session.getMapper(IUserOperation.class);
            User user = userOperation.selectUserByID(1);
            if (user != null) {
                user.setUserAddress("A new place");
                userOperation.updateUser(user);
                session.commit();
            }
        } finally {
            session.close();
        }
    }

    /**
     * 删除后要commit.
     *
     * @param id
     */
    public void deleteUser(int id) {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation = session.getMapper(IUserOperation.class);
            userOperation.deleteUser(id);
            session.commit();
        } finally {
            session.close();
        }
    }
    
    public static void main(String[] args) {
        try {
            Test test = new Test();
            // test.getUserByID(1);
            // test.getUserList("test1");
              test.addUser();
            // test.updateUser();
            // test.deleteUser(6);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

}


明天计划的事情:

遇到的问题:Mybatis和SpringMVC的jar包都有哪些和起什么作用都没有弄清楚。mybatis里面的一些细节,比如sqlSessionFactory等一些代码都没弄懂,要学的东西有很多,时间很紧张。

收获:熟悉了web.xml里面的配置。熟悉了log4j.熟悉了Mybatis。


返回列表 返回列表
评论

    分享到