发表于: 2017-04-09 00:41:30
1 1526
今天完成的事情:
Web.xml 详解:
context:
作用:用来声明应用范围(整个web项目)内的上下文初始化参数。
param-name 上下文参数名称,唯一标示。
param-value 设定的参数名称的值。
- 初始化过程:
- 1.在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>。
- 2.接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。
- 3.接着容器会将读取到<context-param>转化为键值对,并交给ServletContext。
- 4.容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。
- 5.在监听的类中会有一个contextInitialized(ServletContextEvent
event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent
event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。
- 6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。
- 重点:初始化过程可知容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet
- filter:
- 作用:用于指定WEB容器的过滤器,在请求和响应对象在Servlet处理之前和之后,可以通过此过滤器对这两个对象进行处理。
- filter-calss 中指定的过滤器类必须继承javax.servlet.Filter具有以下三种方法:
- init(FilterConfig filterConfig):初始化,一般情况下时读取配置文件中的init-param参数值,如:filterConfig.getInitParameter("encoding")
- doFilter(...):用于对request,response进行处理,并能过chain.doFilter(....)交过下一个控制器
- destroy():资源销毁。
- Listener:
- 作用:可以收到事件什么时候发生以及用什么作为响应的通知。事件监听程序在建立、修改和删除会话或servlet环境时得到通知。常与context-param联合使用。
- listen-class 指定监听类:该类继承ServletContextListener 包含初始化方法contextInitialized(ServletContextEvent event) 和 销毁方法contextDestoryed(ServletContextEvent event).
- 重点---Servlet:
DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:
1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);
3、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);
4、通过ViewResolver解析逻辑视图名到具体视图实现;
5、本地化解析;
6、渲染具体的视图等;
7、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。
- 总结:DispatcherServlet主要负责流程的控制。
load-on-startup:表示启动容器时初始化该Servlet;
url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。
- 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。
评论