struts.xml mysql_mybatis3.3 + struts2.3.24 + mysql5.1.22开发环境搭建及相关说明
一、新建Web工程,并在lib目錄下添加jar包
主要jar包:struts2相關包,mybatis3.3相關包,mysql-connector-java-5.1.22-bin.jar, gson-2.1.jar
二、配置web.xml,添加一個過濾器StrutsPrepareAndExecuteFilter,處理所有*.action請求;
MS
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
*.action
index.jsp
查看該過濾器doFilter源碼,主要做以下幾件事:
1、判斷是否設置了struts排除的url(struts.action.excludePattern,通過正則表達式匹配),如果有且當前路徑符合規則,則將請求轉發給過濾器鏈上下一個對象,不交給struts2處理
if (excludedPatterns != null &&prepare.isUrlExcluded(request, excludedPatterns)) {
chain.doFilter(request, response);
}
2、查找ActionMapping:通過PrepareOperations的findActionMapping方法查找,如果沒找到,則將請求轉發給過濾器鏈上下一個對象,不交給struts2處理;如果找到ActionMapping,則調用ExecuteOperations的executeAction方法,開始執行Action;下圖是根據url找到ActionMapping的情況;
三、配置struts.xml文件,該Demo主要演示向前端傳json格式數據,result type設成json格式,當然也可以設成其它的;
/p>
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
json
text/html
.
.
四、配置Mybatis.xml和userMapper.xml,
配置cacheEnabled為true, 開啟二級緩存;
配置datasource相關信息: type為POOLED-連接池形式,poolMaximumActiveConnections?– 在任意時間存在的活動(也就是正在使用)連接的數量,默認值:10。
配置實體類映射mappers???????????? //
/p>
"http://mybatis.org/dtd/mybatis-3-config.dtd">
配置userMapper.xml,配置緩存為EHcache及相關參數,記得實體類要實現Serializable接口
/p>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
insert into USER(
account,
name,
address
) values (
#{account},
#{name},
#{address}
)
select u.id,
u.account,
u.name,
u.address
from USER u
五、關鍵代碼
DAO層:
首先建一個類,用于獲取SqlSessionFactory,設計成單例模式;
packagems.dao.base;importjava.io.IOException;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.apache.log4j.Logger;public classMySessionFactory {private staticSqlSessionFactory sessionFactory;privateMySessionFactory(){
}public static synchronizedSqlSessionFactory getSqlSessionFactory(){if(sessionFactory == null){try{
sessionFactory= new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));returnsessionFactory;
}catch(IOException e) {
Logger.getLogger(MySessionFactory.class).error("getSqlSessionFactory error.");
e.printStackTrace();return null;
}
}else{returnsessionFactory;
}
}
}
接下來是UserDao,通過openSession獲取SqlSession,注意這里是可以通過SqlSession的commit和rollback進行事務控制的,當然如果本來就一條sql操作,也就沒什么事務控制可言了(本例子只是demo);
packagems.dao;importjava.util.ArrayList;importjava.util.List;importorg.apache.ibatis.session.SqlSession;importms.dao.base.MySessionFactory;importms.model.User;public classUserDao {public void add(User user) throwsException{
SqlSession session=MySessionFactory.getSqlSessionFactory().openSession();try{
String statement= "UserMapper.saveUser";
session.insert(statement, user);
session.commit(true);
}catch(Exception e) {
session.rollback(true);
e.printStackTrace();throw new Exception("error in add method");
}finally{
session.close();
}
}public List queryAllUser() throwsException{
SqlSession session=MySessionFactory.getSqlSessionFactory().openSession();
List users = new ArrayList();try{
String statement= "UserMapper.queryAllUser";
users= session.selectList(statement,1);
session.commit(true);
}catch(Exception e) {
session.rollback(true);
e.printStackTrace();throw new Exception("error in queryAllUser method");
}finally{
session.close();
}returnusers;
}
}
Service層:略
Model:略
Action層:
轉成json格式數據返回給前端;
packagems.action;importjava.io.PrintWriter;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importms.model.User;importms.service.UserService;importorg.apache.log4j.Logger;importorg.apache.struts2.ServletActionContext;importcom.google.gson.Gson;public classUserAction {
Logger logger= Logger.getLogger(UserAction.class);private UserService userService = newUserService();public voidaddUser(){
PrintWriter out= null;try{
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
String account= request.getParameter("account");
String name= request.getParameter("name");
String address= request.getParameter("address");
User user= newUser();
user.setAccount(account);
user.setAddress(address);
user.setName(name);
userService.add(user);
out=response.getWriter();
out.write(new Gson().toJson("success"));
}catch(Exception e){
e.printStackTrace();
logger.error(e.getMessage());if(out != null)
out.write(new Gson().toJson("fail"));
}finally{
out.flush();
out.close();
}
}public voidqueryAllUser(){
PrintWriter out= null;try{
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
Gson gson= newGson();
List userList=userService.queryAllUser();
String gsonStr=gson.toJson(userList);
out=response.getWriter();
out.write(gsonStr);
}catch(Exception e) {
e.printStackTrace();
logger.error(e.getMessage());if(out != null)
out.write(new Gson().toJson("fail"));
}finally{
out.flush();
out.close();
}
}
}
前端代碼:
Insert title here}
賬號:
總結
以上是生活随笔為你收集整理的struts.xml mysql_mybatis3.3 + struts2.3.24 + mysql5.1.22开发环境搭建及相关说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.7 windows 主从
- 下一篇: 余承东回应车BU人事调整:正常人事调整