1.创建项目,点击file–>New–>Modlue,如图所示:
2.选择Maven工程和创建骨架的webapp,点击Next。如图所示:
3.修改相应即可,点击Next。如图所示:
4.点击Finish即可,如图所示:
5.修改pom.xml的代码如下:
4.0.0 com.txw maven_ems 1.0-SNAPSHOT war maven_ems Maven Webapp UTF-8 1.8 1.8 junit junit 4.11 test javax.servlet.jsp jsp-api 2.1 provided javax.servlet javax.servlet-api 3.1.0 provided org.mybatis mybatis 3.4.6 org.apache.struts struts2-core 2.3.16.3 mysql mysql-connector-java 8.0.16 javax.servlet jstl 1.2
如图所示:
6.在resources目录下创建struts.xml的代码如下:
/findAll.jsp
如图所示:
7.在resources目录下创建log4j.properties的代码如下:
log4j.rootLogger=DEBUG, stdout # SqlMap logging configuration... log4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG log4j.logger.com.ibatis.common.util.StopWatch=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
如图所示:
8.在resources目录下创建jdbcConfig.properties的代码如下:
jbbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://192.168.64.128:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimeZone=Asia/Shanghai jdbc.username=root jdbc.password=123456
如图所示:
9.在resources目录下创建mybatis-config.xml的代码如下:
如图所示:
10.修改web.xml的代码如下:
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 @SuppressWarnings("all") // 注解警告信息 public class User { private Integer id; private String name; private String password; private Date birthday; public User() { } public User(Integer id, String name, String password, Date birthday) { this.id = id; this.name = name; this.password = password; this.birthday = birthday; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + ''' + ", password='" + password + ''' + ", birthday=" + birthday + '}'; } }
如图所示:
13.编写UserDao的代码如下:
package com.txw.dao;
import com.txw.entity.User;
import java.util.List;
@SuppressWarnings("all") // 注解警告信息
public interface UserDao {
public List selectAll();
}
如图所示:
14.编写UserDaoMapper.xml的代码如下:
如图所示:
15.编写UserService的代码如下:
package com.txw.service;
import com.txw.entity.User;
import java.util.List;
@SuppressWarnings("all") // 注解警告信息
public interface UserService {
public List findAll();
}
如图所示:
16.编写MybaitsUitl的代码如下:
package com.txw.utils;
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 java.io.IOException;
import java.io.InputStream;
@SuppressWarnings("all") // 注解警告信息
public class MybaitsUitl {
private static SqlSessionFactory ssf = null;
private static ThreadLocal tl = new ThreadLocal();
static {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// 创建SqlSessionFactory工厂对象
ssf = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
// true表示开启自动提交事务,false表示关闭自动提交事务
return ssf.openSession(true);
}
public static SqlSession open(){
SqlSession session = tl.get();
if(session==null){
session = ssf.openSession();
tl.set(session); // 线程绑定session,保证每次调用的是同一个线程
}
return session;
}
public static void close(){
SqlSession session = tl.get();
if(session!=null){
session.close();
tl.set(null);
}
}
public static void commit(){
SqlSession session = tl.get();
if(session!=null) session.commit();
}
public static T getMapper(Class tClass){
return open().getMapper(tClass);
}
}
如图所示:
17.编写UserServiceImpl的代码如下:
package com.txw.service.impl;
import com.txw.dao.UserDao;
import com.txw.entity.User;
import com.txw.service.UserService;
import com.txw.utils.MybaitsUitl;
import java.util.List;
@SuppressWarnings("all") // 注解警告信息
public class UserServiceImpl implements UserService {
@Override
public List findAll() {
UserDao ud = (UserDao) MybaitsUitl.getMapper(UserDao.class);
List users = ud.selectAll();
MybaitsUitl.close();
return users;
}
}
如图所示:
18.编写UserServiceTest的代码如下:
package com.txw.test;
import com.txw.entity.User;
import com.txw.service.UserService;
import com.txw.service.impl.UserServiceImpl;
import org.junit.Test;
import java.util.List;
@SuppressWarnings("all") // 注解警告信息
public class UserServiceTest {
@Test
public void testFindAll(){
UserService us = new UserServiceImpl();
List users = us.findAll();
for (User user : users) {
System.out.println(user);
}
}
}
如图所示:
19.编写UserAction的代码如下:
package com.txw.action;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import com.txw.entity.User;
import com.txw.service.UserService;
import com.txw.service.impl.UserServiceImpl;
import java.util.List;
@SuppressWarnings("all") // 注解警告信息
public class UserAction extends ActionSupport {
private List users;
public String findAll(){
// 调用业务
UserService us = new UserServiceImpl();
users = us.findAll();
// 跳转页面
return Action.SUCCESS;
}
public List getUsers() {
return users;
}
public void setUsers(List users) {
this.users = users;
}
}
如图所示:
20.编写findall.jsp的代码如下:
<%@page pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" session="true" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
查询所有
| ID | NAME | PASSWORD | BIRTHDAY |
| ${user.id} | ${user.name} | ${user.password} | ${user.birthday} |
如图所示:
21.部署Tomcat服务器,如图所示:
22.通过浏览器访问:http://localhost:8080/user/findAll,如图所示:
分析结果如图所示:
1.编写UserDao的代码如下:
public List selectByPage(@Param("beginCount") int beginCount, @Param("pageSize") int pageSize);
如图所示:
2.编写UserDaoMapper.xml的代码如下:
如图所示:
3.编写UserService的代码如下:
public List queryByPage( int pageNumber);
如图所示:
4.编写UserServiceImpl的代码如下:
@Override
public List queryByPage(int pageNumber) {
UserDao us = (UserDao) MybaitsUitl.getMapper(UserDao.class);
// 根据页号计算起始条数
int beginCount = (pageNumber - 1) * 5;
List users = us.selectByPage( beginCount,5);
MybaitsUitl.close();
return users;
}
如图所示:
5.编写UserAction的代码如下:
public String findByPage(){
// 调用业务
UserService us = new UserServiceImpl();
users = us.queryByPage(pageNumber);
// 跳转页面
return Action.SUCCESS;
}
如图所示:
6.编写struts.xml的代码如下:
/findByPage.jsp
如图所示:
7.编写findByPage.jsp的代码如下:
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="true" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
分页查询
| ID | NAME | PASSWORD | BIRTHDAY |
| ${user.id} | ${user.name} | ${user.password} | ${user.birthday} |
如图所示:
通过浏览器访问:http://localhost:8080/user/findByPage?pageNumber=2。如图所示:
1.编写UserDao的代码如下:
public int selectTotalCount();
如图所示:
2.编写UserDaoMapper.xml的代码如下:
如图所示:
3.编写UserService的代码如下:
public int getTotalPages();
如图所示:
4.编写UserServiceImpl的代码如下:
@Override
public int getTotalPages() {
UserDao us = (UserDao) MybaitsUitl.getMapper(UserDao.class);
// 获取总条数
int totalCount = us.selectTotalCount();
// 根据总条数计算总页数
int totalPages = totalCount % 5 == 0 ? totalCount / 5 : totalCount / 5 + 1;
MybaitsUitl.close();
return totalPages;
}
如图所示:
5.编写UserAction的代码如下:
public String findByPage(){
// 调用业务
UserService us = new UserServiceImpl();
// 根据页号查询数据
users = us.queryByPage(pageNumber);
// 获取总页数
totalPages = us.getTotalPages();
// 跳转页面
return Action.SUCCESS;
}
如图所示:
6.编写findByPage.jsp的代码如下:
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="true" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
上下页查询
| ID | NAME | PASSWORD | BIRTHDAY |
| ${user.id} | ${user.name} | ${user.password} | ${user.birthday} |
|
<%--判断上一页--%>
|
|||
如图所示:
通过浏览器访问:http://localhost:8080/user/findByPage?pageNumber=1,如图所示:



