JSP MODEL1
所谓JSP MODEL1 模式就是纯JSP开发,不说废话,一个简单的例子
包结构:JSP要放在WEB-INF文件夹之外,结构如图所示
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="pink"> <center> <h1>用户登陆</h1><br> <hr> <form action="loginC1.jsp" method="post"> 用户名:<input type="text" name="username" size="20"><br> 密码:<input type="password" name="password" size="20"><br> <input type="submit" value="登陆"> <input type="reset" value="重置"> </form> </center> </body> </html>
loginC1.jsp
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'loginC1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% //接收用户名和密码,完成对用户的验证 String u=request.getParameter("username"); String p=request.getParameter("password"); //到数据库中去验证用户 //1.加载驱动 //Class.forName("com.mysql.jdbc.Driver"); Class.forName("com.mysql.jdbc.Driver").newInstance(); //2.得到链接 Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root",""); //3.创建statement Statement s = c.createStatement(); //4.查询 ResultSet rs = s.executeQuery("select password from users where username='" + u + "'"); //5.得到结果 if(rs.next()){ if(rs.getString(1).equals(p)){ //用户名密码正确 response.sendRedirect("wel.jsp?username="+u); }else{ //密码错了 response.sendRedirect("login.jsp"); } }else{ //用户名不存在 response.sendRedirect("login.jsp"); } %> </body> </html>
wel.jsp
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'wel.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 登陆成功!!恭喜您!!<%=request.getParameter("username") %><br> <a href="login.jsp">返回登陆页面</a> <br> <h3>用户信息列表</h3> <% int pageSize = 5; int pageNow = 1;//默认显示第一页 int rowCount = 0;//该值从数据库查询 int pageCount = 0;//该值通过计算获得 //接收pageNow String strPageNow = request.getParameter("pageNow"); System.out.println(strPageNow); if(strPageNow != null && !strPageNow.isEmpty()){ pageNow = Integer.parseInt(strPageNow); } //查询得到rowCount //1.加载驱动 //Class.forName("com.mysql.jdbc.Driver"); Class.forName("com.mysql.jdbc.Driver").newInstance(); //2.得到链接 Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root",""); //3.创建statement Statement s = c.createStatement(); //4.查询 ResultSet rs = s.executeQuery("select count(*) from users"); //5.得到结果 if(rs.next()){ rowCount = rs.getInt(1); } if(rowCount%pageSize == 0){ pageCount = rowCount/pageSize; }else{ pageCount = rowCount/pageSize + 1; } //查出需要显示的数据 rs = s.executeQuery("select * from users limit " + String.valueOf((pageNow - 1)*pageSize) + "," + pageSize); %> <table border="1"> <tr><td>用户ID</td><td>用户名字</td><td>用户密码</td><td>电子邮件</td><td>级别</td></tr> <% while(rs.next()){ %> <tr> <td><%=rs.getInt(1) %></td> <td><%=rs.getString(2) %></td> <td><%=rs.getString(3) %></td> <td><%=rs.getString(4) %></td> <td><%=rs.getInt(5) %></td> </tr> <% } %> </table> <% //翻页控件 if(pageNow!=1){ out.println("<a href=wel.jsp?pageNow=" + String.valueOf(pageNow-1) + "><上一页</a> "); } for(int i=1;i<=pageCount;i++){ out.println("<a href=wel.jsp?pageNow=" + String.valueOf(i) + ">" + i + "</a> "); } if(pageNow!=pageCount){ out.println(" <a href=wel.jsp?pageNow=" + String.valueOf(pageNow+1) + ">下一页></a>"); } %> </body> </html>
JSP MODEL2模式
就是把页面和逻辑尽量分开,页面用JSP,逻辑用java类
包结构如下
UserBean.java
package bean;
public class UserBean {
private int userId;
private String username;
private String password;
private String eMail;
private int grade;
/**
* @return the userId
*/
public int getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId(int userId) {
this.userId = userId;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return the eMail
*/
public String geteMail() {
return eMail;
}
/**
* @param eMail the eMail to set
*/
public void seteMail(String eMail) {
this.eMail = eMail;
}
/**
* @return the grade
*/
public int getGrade() {
return grade;
}
/**
* @param grade the grade to set
*/
public void setGrade(int grade) {
this.grade = grade;
}
}
UserBo.java
package bo;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import util.JdbcUtils;
import bean.UserBean;
//封装对user表的增删改查.....
public class UserBo {
private PreparedStatement ps = null;
private Connection conn = null;
private ResultSet rs = null;
private int pageSize = 5;
private int rowCount = 0;//该值从数据库查询
private int pageCount = 0;//该值通过计算获得
//验证用户是否存在
public boolean checkUser(String username,String password){
boolean userExist = false;
try {
conn = JdbcUtils.getConnection();
String strSql = "select password from users where username=?";
ps = conn.prepareStatement(strSql);
ps.setString(1, username);
rs = ps.executeQuery();
if(rs.next()){
if(rs.getString(1).equals(password)){
//用户名密码正确
userExist = true;
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtils.free(rs, ps, conn);
}
return userExist;
}
//得到分页的一览数据
public List<UserBean> getUserList(String strPageNow){
List<UserBean> userList = new ArrayList<UserBean>();
int pageNow = 1;
if(strPageNow != null){
pageNow = Integer.parseInt(strPageNow);
}
try {
//查出需要显示的数据
conn = JdbcUtils.getConnection();
String startRow = String.valueOf((pageNow - 1)*pageSize);
String strSql = "select*from users limit ?,?";
ps = conn.prepareStatement(strSql);
ps.setInt(1, Integer.parseInt(startRow));
ps.setInt(2, pageSize);
rs = ps.executeQuery();
while(rs.next()){
UserBean userBean = new UserBean();
userBean.setUserId(rs.getInt(1));
userBean.setUsername(rs.getString(2));
userBean.setPassword(rs.getString(3));
userBean.seteMail(rs.getString(4));
userBean.setGrade(rs.getInt(5));
userList.add(userBean);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtils.free(rs, ps, conn);
}
return userList;
}
//返回分页的总件数
public int getPageCount(){
try {
conn = JdbcUtils.getConnection();
String strSql = "select count(*) from users";
ps = conn.prepareStatement(strSql);
rs = ps.executeQuery();
if(rs.next()){
rowCount = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtils.free(rs, ps, conn);
}
if(rowCount%pageSize == 0){
pageCount = rowCount/pageSize;
}else{
pageCount = rowCount/pageSize + 1;
}
return pageCount;
}
}
JdbcUtils.java
package util;
import java.sql.*;
public final class JdbcUtils {
private static String url = "jdbc:mysql://localhost:3306/test";
private static String user = "root";
private static String pw = "";
//不让别人new
private JdbcUtils(){
}
static{
try{
//1:注册驱动(只做一次)
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url,user,pw);
}
public static void free(ResultSet rs,PreparedStatement ps,Connection conn){
try{
if(rs != null)
rs.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(ps != null)
ps.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn != null)
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
public static void free(ResultSet rs,Statement ps,Connection conn){
try{
if(rs != null)
rs.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(ps != null)
ps.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn != null)
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
}
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body bgcolor="pink"> <center> <h1>用户登陆</h1><br> <hr> <form action="loginC1.jsp" method="post"> 用户名:<input type="text" name="username" size="20"><br> 密码:<input type="password" name="password" size="20"><br> <input type="submit" value="登陆"> <input type="reset" value="重置"> </form> </center> </body> </html>
loginC1.jsp
<%@ page language="java" import="java.util.*,java.sql.*,bo.UserBo" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'loginC1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% //接收用户名和密码,完成对用户的验证 String u=request.getParameter("username"); String p=request.getParameter("password"); //调用userBo完成对用户的验证 UserBo userBo = new UserBo(); if(userBo.checkUser(u,p)){ response.sendRedirect("wel.jsp?username="+u); }else{ response.sendRedirect("login.jsp"); } %> </body> </html>
wel.jsp
<%@ page language="java" import="java.util.*,java.sql.*,java.util.List,bo.UserBo,bean.UserBean" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'wel.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 登陆成功!!恭喜您!!<%=request.getParameter("username") %><br> <a href="login.jsp">返回登陆页面</a> <br> <h3>用户信息列表</h3> <% //接收pageNow String strPageNow = request.getParameter("pageNow"); int pageNow = 1; if(strPageNow != null){ pageNow = Integer.parseInt(strPageNow); } UserBo userBo = new UserBo(); List<UserBean> userBeanList = userBo.getUserList(strPageNow); %> <table border="1"> <tr><td>用户ID</td><td>用户名字</td><td>用户密码</td><td>电子邮件</td><td>级别</td></tr> <% for(UserBean userBean:userBeanList){ %> <tr> <td><%=userBean.getUserId() %></td> <td><%=userBean.getUsername() %></td> <td><%=userBean.getPassword() %></td> <td><%=userBean.getPassword() %></td> <td><%=userBean.getGrade() %></td> </tr> <% } int pageCount = userBo.getPageCount(); %> </table> <% //翻页控件 if(pageNow!=1){ out.println("<a href=wel.jsp?pageNow=" + String.valueOf(pageNow-1) + "><上一页</a> "); } for(int i=1;i<=pageCount;i++){ out.println("<a href=wel.jsp?pageNow=" + String.valueOf(i) + ">" + i + "</a> "); } if(pageNow!=pageCount){ out.println(" <a href=wel.jsp?pageNow=" + String.valueOf(pageNow+1) + ">下一页></a>"); } %> </body> </html>