案例1:index.jsp ---mysql8.0版本
<%--
Created by IntelliJ IDEA.
User: admin
Date: 2022/6/2
Time: 15:52
To change this template use File | Settings | File Templates.
--%>
<%@page import="java.sql.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<th>编号</th>
<th>用户姓名</th>
<th>用户编号</th>
<th>角色</th>
<th>是否启用</th>
</tr>
<%
String curpage=request.getParameter("pageNow");
//分页
int pagesize=5;
int lineCount;//一共多少行
int pageCount=0;//一共多少页
int pageNow=1;//当前第几页
if(!"".equals(curpage)&& null!=curpage){
pageNow=Integer.parseInt(curpage);
}
String username="";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/swt3_sanxia?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF8&useOldAliasMetadataBehavior=true&&zeroDateTimeBehavior=convertToNull";
Connection conn=DriverManager.getConnection(url,"root","123123");
String sql1="select count(1) from sysusertb ";
PreparedStatement ps1=conn.prepareStatement(sql1);
ResultSet rs1=ps1.executeQuery();
rs1.next();
lineCount=rs1.getInt(1);
pageCount=lineCount%pagesize==0?lineCount/pagesize : lineCount/pagesize+1;
String sql="select * from sysusertb limit ?,?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,pagesize*(pageNow-1));
ps.setInt(2,pagesize);
ResultSet rs=ps.executeQuery();
String username1="";
int i=0;
while(rs.next()){
username=(String)rs.getString("username");
System.out.println(rs.getString("username"));
i=i+1;
%>
<tr>
<td><%=i%></td>
<td><%=rs.getString("usercode")%></td>
<td><%=rs.getString("username")%></td>
<td><%=rs.getString("rolecode")%></td>
<td><%=rs.getString("userstat")%></td>
</tr>
<%
}
ps.close();
conn.close();
} catch (Exception e) {
out.print("图书信息添加失败!");
e.printStackTrace();
}
%>
</table>
<div>
<%
for (int i=1;i<=pageCount;i++){
%>
<a href="/test1.jsp?pageNow=<%=i%>">[<%=i%>]</a>
<%
}
%>
</div>
<div>
</div>
</body>
</html>
案例2:
<%--
Created by IntelliJ IDEA.
User: admin
Date: 2022/6/2
Time: 15:52
To change this template use File | Settings | File Templates.
--%>
<%@page import="java.sql.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<th>编号</th>
<th>用户姓名</th>
<th>用户编号</th>
<th>角色</th>
<th>是否启用</th>
</tr>
<%
String curpage=request.getParameter("pageNow");
//分页
int pagesize=5;
int lineCount;//一共多少行
int pageCount=0;//一共多少页
int pageNow=1;//当前第几页
if(!"".equals(curpage)&& null!=curpage){
pageNow=Integer.parseInt(curpage);
}
String username="";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/swt3_sanxia?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF8&useOldAliasMetadataBehavior=true&&zeroDateTimeBehavior=convertToNull";
Connection conn=DriverManager.getConnection(url,"root","123123");
String sql1="select count(1) from sysusertb ";
PreparedStatement ps1=conn.prepareStatement(sql1);
ResultSet rs1=ps1.executeQuery();
rs1.next();
lineCount=rs1.getInt(1);
pageCount=lineCount%pagesize==0?lineCount/pagesize : lineCount/pagesize+1;
if(pageNow<=0){
pageNow=1;
}
if(pageNow>=pageCount){
pageNow=pageCount;
}
String sql="select * from sysusertb limit ?,?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,pagesize*(pageNow-1));
ps.setInt(2,pagesize);
ResultSet rs=ps.executeQuery();
String username1="";
int i=0;
while(rs.next()){
username=(String)rs.getString("username");
System.out.println(rs.getString("username"));
i=i+1;
%>
<tr>
<td><%=i%></td>
<td><%=rs.getString("usercode")%></td>
<td><%=rs.getString("username")%></td>
<td><%=rs.getString("rolecode")%></td>
<td><%=rs.getString("userstat")%></td>
</tr>
<%
}
ps.close();
conn.close();
} catch (Exception e) {
out.print("图书信息添加失败!");
e.printStackTrace();
}
%>
</table>
<div>
<%
%>
<a href="/test2.jsp?pageNow=1">首页</a>
<a href="/test2.jsp?pageNow=<%=pageNow-1%>">上一页</a>
<a href="/test2.jsp?pageNow=<%=pageNow+1%>">下一页</a>
<a href="/test2.jsp?pageNow=<%=pageCount%>">末页</a>
<br>一共分了<%=pageCount%>页,当前在<%=pageNow%>页
<%
%>
</div>
<div>
</div>
</body>
</html>
案例3
<%--
Created by IntelliJ IDEA.
User: admin
Date: 2022/6/2
Time: 15:52
To change this template use File | Settings | File Templates.
--%>
<%@page import="java.sql.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<th>编号</th>
<th>用户姓名</th>
<th>用户编号</th>
<th>角色</th>
<th>是否启用</th>
</tr>
<%
String curpage=request.getParameter("pageNow");
//分页
int pagesize=5;
int lineCount;//一共多少行
int pageCount=0;//一共多少页
int pageNow=1;//当前第几页
if(!"".equals(curpage)&& null!=curpage){
pageNow=Integer.parseInt(curpage);
}
String username="";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/swt3_sanxia?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF8&useOldAliasMetadataBehavior=true&&zeroDateTimeBehavior=convertToNull";
Connection conn=DriverManager.getConnection(url,"root","123123");
String sql1="select count(1) from sysusertb ";
PreparedStatement ps1=conn.prepareStatement(sql1);
ResultSet rs1=ps1.executeQuery();
rs1.next();
lineCount=rs1.getInt(1);
pageCount=lineCount%pagesize==0?lineCount/pagesize : lineCount/pagesize+1;
if(pageNow<=0){
pageNow=1;
}
if(pageNow>=pageCount){
pageNow=pageCount;
}
String sql="select * from sysusertb limit ?,?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,pagesize*(pageNow-1));
ps.setInt(2,pagesize);
ResultSet rs=ps.executeQuery();
String username1="";
int i=0;
while(rs.next()){
username=(String)rs.getString("username");
System.out.println(rs.getString("username"));
i=i+1;
%>
<tr>
<td><%=i%></td>
<td><%=rs.getString("usercode")%></td>
<td><%=rs.getString("username")%></td>
<td><%=rs.getString("rolecode")%></td>
<td><%=rs.getString("userstat")%></td>
</tr>
<%
}
ps.close();
conn.close();
} catch (Exception e) {
out.print("图书信息添加失败!");
e.printStackTrace();
}
%>
</table>
<div>
<select onchange="location.href='/test3.jsp?pageNow='+this.value">
<%
for (int i=1;i<=pageCount;i++){
%>
<%
if (pageNow==i) {
%>
<option value="<%=i%>" selected><%=i%></option>
<%
}else{
%>
<option value="<%=i%>" ><%=i%></option>
<%
}
}
%>
</select>
<br>一共分了<%=pageCount%>页,当前在<%=pageNow%>页
</div>
<div>
</div>
</body>
</html>
案例4:
<%--
Created by IntelliJ IDEA.
User: admin
Date: 2022/6/2
Time: 15:52
To change this template use File | Settings | File Templates.
--%>
<%@page import="java.sql.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<th>编号</th>
<th>用户姓名</th>
<th>用户编号</th>
<th>角色</th>
<th>是否启用</th>
</tr>
<%
String curpage=request.getParameter("pageNow");
//分页
int pagesize=5;
int lineCount;//一共多少行
int pageCount=0;//一共多少页
int pageNow=1;//当前第几页
if(!"".equals(curpage)&& null!=curpage){
pageNow=Integer.parseInt(curpage);
}
String username="";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/swt3_sanxia?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF8&useOldAliasMetadataBehavior=true&&zeroDateTimeBehavior=convertToNull";
Connection conn=DriverManager.getConnection(url,"root","123123");
String sql1="select count(1) from sysusertb ";
PreparedStatement ps1=conn.prepareStatement(sql1);
ResultSet rs1=ps1.executeQuery();
rs1.next();
lineCount=rs1.getInt(1);
pageCount=lineCount%pagesize==0?lineCount/pagesize : lineCount/pagesize+1;
if(pageNow<=0){
pageNow=1;
}
if(pageNow>=pageCount){
pageNow=pageCount;
}
String sql="select * from sysusertb limit ?,?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,pagesize*(pageNow-1));
ps.setInt(2,pagesize);
ResultSet rs=ps.executeQuery();
String username1="";
int i=0;
while(rs.next()){
username=(String)rs.getString("username");
System.out.println(rs.getString("username"));
i=i+1;
%>
<tr>
<td><%=i%></td>
<td><%=rs.getString("usercode")%></td>
<td><%=rs.getString("username")%></td>
<td><%=rs.getString("rolecode")%></td>
<td><%=rs.getString("userstat")%></td>
</tr>
<%
}
ps.close();
conn.close();
} catch (Exception e) {
out.print("图书信息添加失败!");
e.printStackTrace();
}
%>
</table>
<div>
<select onchange="location.href='/myfirst?' +
'pageNow='+this.value">
<%
for (int i=1;i<=pageCount;i++){
%>
<%
if (pageNow==i) {
%>
<option value="<%=i%>" selected><%=i%></option>
<%
}else{
%>
<option value="<%=i%>" ><%=i%></option>
<%
}
}
%>
</select>
<br>一共分了<%=pageCount%>页,当前在<%=pageNow%>页
</div>
<div>
</div>
</body>
</html>
5请求转发和重定向的区别
1请求转发地址不变,request,response共享,可以获取
2重定向,会重新发送到新的请求地址,之前的请求路径的request,response不能共享,由于不是同一个请求。是客户端重新发送请求。
3请求顺序 ,请求转发 客户端login.jsp--》访问服务端-服务端访问客户端--》访问index.jsp==》服务端---》服务端-login.jsp (全程是同一个请求)
重定向,客户端
1.login.jsp--》访问服务端---》login.jsp
2.login.jsp --》访问index.jsp (全程是2个请求)
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.*;
public class MyFirstServlet extends HttpServlet{
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
System.out.println("这是doPost方法");
//PrintWriter out = response.getWriter();
// out.println("<strong>Hello Servlet!</strong><br/>");
System.out.println("username=1="+request.getParameter("username"));
HttpSession session = request.getSession(true);
session.setAttribute("username",request.getParameter("username"));
System.out.println("username=2="+session.getAttribute("username"));
String addr= request.getRemoteAddr();
System.out.println("addr=2="+addr);
String host= request.getRemoteHost();
System.out.println("host=2="+host);
int ports=request.getRemotePort();
System.out.println("ports=2="+ports);
String user= request.getRemoteUser();
System.out.println("user=2="+user);
// String path1="/index.jsp";
String path1="/test2.jsp";
/**
* (1)重定向
* 两次请求,两次响应
* 重定向不携带数据
* 重定向地址栏发生改变
* (2)转发
* 一次请求,一次响应
* 转发需要携带数据,请求域中数据不会丢失
* 转发地址栏不会发生变化
*/
//重定向
request.getRequestDispatcher(path1).forward(request, response);
// response.sendRedirect(path1);
}
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
System.out.println("这是doGet方法");
//指定request请求时的字符编码格式
request.setCharacterEncoding("UTF-8");
//设置response响应的字符编码格式
response.setCharacterEncoding("UTF-8");
//设置响应内容类型为 text/html(文本/超文本标记语言);文本编码为UTF-8
response.setContentType("text/html'charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<strong>Hello Servlet!</strong>");
String path1="/test4.jsp";
/**
* (1)重定向
* 两次请求,两次响应
* 重定向不携带数据
* 重定向地址栏发生改变
* (2)转发
* 一次请求,一次响应
* 转发需要携带数据,请求域中数据不会丢失
* 转发地址栏不会发生变化
*/
//重定向
HttpSession session = request.getSession(true);
session.setAttribute("username",request.getParameter("username"));
System.out.println("username=1="+request.getParameter("username"));
System.out.println("username1=1="+request.getParameter("username1"));
// response.sendRedirect(path1);
request.getRequestDispatcher(path1).forward(request, response);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>first</servlet-name>
<servlet-class> com.test.MyFirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/myfirst</url-pattern>
</servlet-mapping>
</web-app>