技巧 :
Mysql 自增长清零 : https://my.oschina.net/rongruoxzhl/blog/300383
Method 1 : truncate table table_name;
6.27 MVC 学习
- forEach的用法
<c:forEach var="每个变量名字" items="要迭代的list" varStatus="每个对象的状态" begin="循环从哪儿开始" end="循环到哪儿结束" step="循环的步长">
循环要输出的东西
</c:forEach>
EL表达式改写
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,java.awt.*,bean.Hero" isELIgnored="false" %>
<%@ taglib prefix = "c" uri="http://java.sun.com/jsp/jstl/core" %>
<table align='center' border = '1' cellspacing = '0' >
<tr>
<td>id</td>
<td>name</td>
<td>hp</td>
<td>damage</td>
<td>edit</td>
<td>delete</td>
</tr>
<c:forEach items = "${myHeros}" var="hero" varStatus="st">
<tr>
<td>${hero.id} </td>
<td>${hero.name}</td>
<td>${hero.hp} </td>
<td>${ hero.damage } </td>
<td><a href="editHero?id=${hero.id}">edit</a></td>
<td><a href="deleteHero?id=${hero.id}">delete</a></td>
</tr>
</c:forEach>
- MVC分页技术
- 分页的实现原理: 其实就是到后台找到数据, 然后反馈到页面上
- 范例
Service端
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Hero;
import dao.HeroDao;
public class HeroListServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ArrayList<Hero> heros = new ArrayList<Hero>();
int start = 0;
int count = 2;
heros = (ArrayList<Hero>) new HeroDao().list(start, count);
request.setAttribute("myHeros", heros);
request.getRequestDispatcher("listHero.jsp").forward(request, response);
}
}
显示端
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,java.awt.*,bean.Hero" isELIgnored="false" %>
<%@ taglib prefix = "c" uri="http://java.sun.com/jsp/jstl/core" %>
<table align='center' border = '1' cellspacing = '0' >
<tr>
<td>id</td>
<td>name</td>
<td>hp</td>
<td>damage</td>
<td>edit</td>
<td>delete</td>
</tr>
<c:forEach items = "${myHeros}" var="hero" varStatus="st">
<tr>
<td>${hero.id} </td>
<td>${hero.name}</td>
<td>${hero.hp} </td>
<td>${ hero.damage } </td>
<td><a href="editHero?id=${hero.id}">edit</a></td>
<td><a href="deleteHero?id=${hero.id}">delete</a></td>
</tr>
</c:forEach>
</table>
- 下一页
- 思路 :
i) 在jsp文件下写下这么一段话 : next page
注意这个next的参数是在java文件中通过request域传送过来的.
之前已经处理过了.
ii) 然后在HeroListServlet文件中,将处理过的next内容发给jsp文件. - 范例
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,java.awt.*,bean.Hero"
isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<table align='center' border='1' cellspacing='0'>
<tr>
<td>id</td>
<td>name</td>
<td>hp</td>
<td>damage</td>
<td>edit</td>
<td>delete</td>
</tr>
<c:forEach items="${myHeros}" var="hero" varStatus="st">
<tr>
<td>${hero.id}</td>
<td>${hero.name}</td>
<td>${hero.hp}</td>
<td>${ hero.damage }</td>
<td><a href="editHero?id=${hero.id}">edit</a></td>
<td><a href="deleteHero?id=${hero.id}">delete</a></td>
</tr>
</c:forEach>
</table>
<a href="heroList?start=${next}">next page</a>
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Hero;
import dao.HeroDao;
public class HeroListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ArrayList<Hero> heros = new ArrayList<Hero>();
int start = 0;
int count = 10;
if (request.getParameter("start") != null ) {
start = Integer.parseInt(request.getParameter("start"));
}
System.out.println("使用默认参数 : start : " + start);
heros = (ArrayList<Hero>) new HeroDao().list(start, count);
request.setAttribute("myHeros", heros);
request.setAttribute("next",start + count );
request.getRequestDispatcher("listHero.jsp").forward(request, response);
}
}
- 下一页
- 思路 : 思路同上面的一致
- 主要的一些问题 : 就是最后一页需要判断, 绝对不能溢出, 否则就很难看了
- 范例 :
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Hero;
import dao.HeroDao;
public class HeroListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ArrayList<Hero> heros = new ArrayList<Hero>();
int start = 0;
int count = 10;
if (request.getParameter("start") != null) {
start = Integer.parseInt(request.getParameter("start"));
}
System.out.println("使用默认参数 : start : " + start);
heros = (ArrayList<Hero>) new HeroDao().list(start, count);
request.setAttribute("myHeros", heros);
if (start < 90) {
request.setAttribute("next", start + count);
} else {
request.setAttribute("next", 90);
}
if (start > 0) {
request.setAttribute("back", start - count);
} else {
request.setAttribute("back", 0);
}
request.getRequestDispatcher("listHero.jsp").forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,java.awt.*,bean.Hero"
isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<table align='center' border='1' cellspacing='0'>
<tr>
<td>id</td>
<td>name</td>
<td>hp</td>
<td>damage</td>
<td>edit</td>
<td>delete</td>
</tr>
<c:forEach items="${myHeros}" var="hero" varStatus="st">
<tr>
<td>${hero.id}</td>
<td>${hero.name}</td>
<td>${hero.hp}</td>
<td>${ hero.damage }</td>
<td><a href="editHero?id=${hero.id}">edit</a></td>
<td><a href="deleteHero?id=${hero.id}">delete</a></td>
</tr>
</c:forEach>
</table>
<a href="heroList?start=${next}">next page</a><br>
<a href="heroList?start=${back}">back page</a><br>
- 首页 和 尾页
- 直接在jsp上增加首页和尾页标签用来跳转
- 范例 :
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Hero;
import dao.HeroDao;
public class HeroListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ArrayList<Hero> heros = new ArrayList<Hero>();
int start = 0;
int count = 10;
if (request.getParameter("start") != null) {
start = Integer.parseInt(request.getParameter("start"));
}
System.out.println("使用默认参数 : start : " + start);
if(start-count >= -10 && start-count <= 90){
heros = (ArrayList<Hero>) new HeroDao().list(start, count);
request.setAttribute("myHeros", heros);
}else{
heros = (ArrayList<Hero>) new HeroDao().list(0, count);
}
// 指定last
int last = 0;
int total = new HeroDao().getTotal();
if (total % count == 0) {
last = (total / count - 1) * count;
} else {
last = (total / count - 1) * count + total % count;
}
request.setAttribute("last", last);
// 判断是否越界
if (start < 90) {
request.setAttribute("next", start + count);
} else {
request.setAttribute("next", 90);
}
if (start > 0) {
request.setAttribute("back", start - count);
} else {
request.setAttribute("back", 0);
}
// 发送请求到客户端
request.getRequestDispatcher("listHero.jsp").forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,java.awt.*,bean.Hero"
isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<table align='center' border='1' cellspacing='0'>
<tr>
<td>id</td>
<td>name</td>
<td>hp</td>
<td>damage</td>
<td>edit</td>
<td>delete</td>
</tr>
<c:forEach items="${myHeros}" var="hero" varStatus="st">
<tr>
<td>${hero.id}</td>
<td>${hero.name}</td>
<td>${hero.hp}</td>
<td>${ hero.damage }</td>
<td><a href="editHero?id=${hero.id}">edit</a></td>
<td><a href="deleteHero?id=${hero.id}">delete</a></td>
</tr>
</c:forEach>
</table>
<a href="heroList?start=0">first page</a><br>
<a href="heroList?start=${next}">next page</a><br>
<a href="heroList?start=${back}">back page</a><br>
<a href="heroList?start=${last}">last page</a><br>