J2EE之路(四)JspModel1模式和JspModel2模式的简单实例

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> 
  		&nbsp;&nbsp;密码:<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>&nbsp;&nbsp;");
  		}
  		for(int i=1;i<=pageCount;i++){
  			out.println("<a href=wel.jsp?pageNow=" + String.valueOf(i) + ">" + i + "</a>&nbsp;&nbsp;");
  		}
  		if(pageNow!=pageCount){
  			out.println("&nbsp;&nbsp;<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> 
  		&nbsp;&nbsp;密码:<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>&nbsp;&nbsp;");
  		}
  		for(int i=1;i<=pageCount;i++){
  			out.println("<a href=wel.jsp?pageNow=" + String.valueOf(i) + ">" + i + "</a>&nbsp;&nbsp;");
  		}
  		if(pageNow!=pageCount){
  			out.println("&nbsp;&nbsp;<a href=wel.jsp?pageNow=" + String.valueOf(pageNow+1) + ">下一页></a>");
  		}
  	%>
  </body>
</html>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值