暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Servlet 工具类的使用 和分页功能

java小小小小栈 2020-12-29
255



        UserServlet 类使用 DispatcherServlet 工具类。



@WebServlet("/UserServlet/*")
public class UserServlet extends DispatcherServlet {




public String login(String username, String password, String code, HttpServletRequest request, HttpServletResponse response) {
String sessioCode = request.getSession().getAttribute("code").toString();


if(sessioCode.equalsIgnoreCase(code)){


if("admin".equals(username) && "123".equals(password)){


request.getSession().setAttribute("username",username);


return ConstUtils.REDIRECT + ":EmpServlet?action=listEmp";


}else{
try {
response.getWriter().write("用户名或密码错,<a href='index.jsp'>登录</a>");
} catch (IOException e) {
e.printStackTrace();
}
}


}else{
try {
response.getWriter().write("验证码有误,重新<a href='index.jsp'>登录</a>");
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}


public String logout(HttpServletRequest request) {
request.getSession().invalidate();
return ConstUtils.REDIRECT + ":index.jsp";
}


}




        注意登陆、登出的响应要做相应更改。



// 登陆
<form method="post" action="UserServlet/login">
用户名:<input type="text" name="username" value="admin"> <br>
密码:<input type="text" name="password" value="123"> <br>
验证码:<input type="text" name="code"> <img src="CodeServlet?action=getCode"><br>
<input type="submit" value="登陆">
  </form>


// 登出
<a href="UserServlet/logout">登出</a>


        分页功能。

        基本步骤。

        写实体类,定义页码、每页个数、数据总个数、总页数,每页数据。

        数据库中查询每页数据、数据总个数,计算出总页数。

        将实体类存储在域中,页面拿到实体类并做页面逻辑。


        部分代码。



// 实体类
@Data
public class Page {


private Integer page = 1;
private Integer pageSize = 10;


private Integer totalNum;
private Integer totalPage;


private List data;


}




// DaoUtils 工具类
// 查询数据个数
public static int commonQueryTotal(String sql) {


Connection connection = DBUtils.getConnection();
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
int total = 0;
try {
preparedStatement = connection.prepareStatement(sql);


resultSet = preparedStatement.executeQuery();


if (resultSet.next()) {
total = resultSet.getInt(1);
}


} catch (SQLException e) {
e.printStackTrace();
}




return total;
}


// dao 类
//class EmpDaoImpl implements IEmpDao


// 查询每页数据
@Override
public List<Emp> getEmpListPage(Integer pageStart, Integer pageSize) {
String sql = "select * from t_user limit ?,?";
return DaoUtils.commonQueryPage(sql, Emp.class, pageStart, pageSize);
}


// 查询数据总数
@Override
public int getEmpTotal() {


String sql = "select count(1) from t_user";


return DaoUtils.commonQueryTotal(sql);
}




// 业务类
// class EmpServiceImpl implements IEmpService


@Override
public List<Emp> getEmpListPage(Page page) {


return empDao.getEmpListPage((page.getPage() -1) * page.getPageSize(), page.getPageSize());


}


@Override
public int getEmpTotalNum() {
return empDao.getEmpTotal();
}


// 计算总页数
@Override
public int getEmpTotalPage(Page page) {
int num = getEmpTotalNum();
if (num % page.getPageSize() == 0) {
return num / page.getPageSize();
} else {
return num / page.getPageSize() + 1;
}
}




//class EmpServlet extends HttpServlet


if ("listEmp".equals(action)) {
// 查询


int iPage = 1;
// 在 链接中获取页码
String sPage = request.getParameter("page");
if (sPage != null && sPage.length() > 0) {
iPage = Integer.parseInt(sPage);
}




Page page = new Page();
page.setPage(iPage);
page.setPageSize(5);
page.setTotalNum(empService.getEmpTotalNum());
page.setTotalPage(empService.getEmpTotalPage(page));
page.setData(empService.getEmpListPage(page));


// 在域中存储 page
request.setAttribute("page", page);


request.getRequestDispatcher("selectListUser.jsp").forward(request, response);


        }


// 页面逻辑


<body>


欢迎【${sessionScope.username}】登陆<br>
<a href="UserServlet/logout">登出</a>
<a href="addUser.jsp?action=addEmp">添加用户</a>


<table border="1">
<tr>
<th>id</th>
<th>用户名</th>
<th>密码</th>
<th>年龄</th>
<th>性别</th>
<th>邮箱</th>
<th>生日</th>
<th>编辑</th>
</tr>


<c:forEach items="${page.data}" var="emp">
<tr>
<td>${emp.id}</td>
<td>${emp.username}</td>
<td>${emp.password}</td>
<td>${emp.age}</td>
<td>${emp.sex == 1 ? "男" : "女"}</td>
<td>${emp.email}</td>
<td>${emp.birthday}</td>
<td>
<a href="addUser.jsp?action=updateEmp&id=${emp.id}">修改</a>
<a href="EmpServlet?action=deleteEmp&id=${emp.id}&page=${page.page}">删除</a>
</td>
</tr>
</c:forEach>
</table>


<span>总页数:${page.totalPage}</span><br>
<span>总个数:${page.totalNum}</span><br>
<span>当前页</span>:${page.page}</span><br>
<a href="/EmpServlet?action=listEmp&page=1">首页</a>


<c:if test="${page.page > 1}">
<a href="/EmpServlet?action=listEmp&page=${page.page - 1}">上一页</a>
</c:if>
<c:if test="${page.page < page.totalPage - 1}">
<a href="/EmpServlet?action=listEmp&page=${page.page + 1}">下一页</a>
</c:if>


<a href="/EmpServlet?action=listEmp&page=${page.totalPage}">尾页</a>


</body>



文章转载自java小小小小栈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论