日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

struts.xml mysql_mybatis3.3 + struts2.3.24 + mysql5.1.22开发环境搭建及相关说明

發布時間:2023/12/15 数据库 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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开发环境搭建及相关说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。