学完JSP,运用MVC设计模式实现简单的CRUD操作(改进版)

项目预览


实现代码

/day_0509_01/src/com/qst/util/DBUtil.java

package com.qst.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtil {
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;

	/**
	 * 得到数据库连接
	 */
	public Connection getConnection()  {
		// 通过Config获取数据库配置信息
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://39.105.54.45:3306/zhuxueliang?useUnicod=true&characterEncoding=utf-8";
		String user ="root";
		String pwd = "123";
		try {
			// 指定驱动程序
			Class.forName(driver);
			// 建立数据库连结
			conn = DriverManager.getConnection(url, user, pwd);
		} catch (Exception e) {
			// 如果连接过程出现异常,抛出异常信息
			//throw new SQLException("驱动错误或连接失败!");
			return null;
		}
		return conn;
		
	}

	/**
	 * 释放资源
	 */
	public void closeAll() {
		// 如果rs不空,关闭rs
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		// 如果pstmt不空,关闭pstmt
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		// 如果conn不空,关闭conn
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 执行SQL语句,可以进行查询
	 */
	public ResultSet executeQuery(String preparedSql, Object[] param) {
		// 处理SQL,执行SQL
		try {
			// 得到PreparedStatement对象
			pstmt = conn.prepareStatement(preparedSql);
			if (param != null) {
				for (int i = 0; i < param.length; i++) {
					// 为预编译sql设置参数
					pstmt.setObject(i + 1, param[i]);
				}
			}
			// 执行SQL语句
			rs = pstmt.executeQuery();
		} catch (SQLException e) {
			// 处理SQLException异常
			e.printStackTrace();
		}
		return rs;
	}

	/**
	 * 执行SQL语句,可以进行增、删、改的操作,不能执行查询
	 * @throws SQLException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 * @throws ClassNotFoundException 
	 */
	public int executeUpdate(String preparedSql, Object[] param) {

		int num = 0;
		// 处理SQL,执行SQL
		try {
			this.getConnection();
			// 得到PreparedStatement对象
			pstmt = conn.prepareStatement(preparedSql);
			if (param != null) {
				for (int i = 0; i < param.length; i++) {
					// 为预编译sql设置参数
					pstmt.setObject(i + 1, param[i]);
				}
			}
			// 执行SQL语句
			num = pstmt.executeUpdate();
		} catch (SQLException e) {
			// 处理SQLException异常
			e.printStackTrace();
		}finally {
			this.closeAll();
		}
		return num;
	}
	public static void main(String[] args) {
		DBUtil dbUtil = new DBUtil();
		System.out.println(dbUtil.getConnection());
	}
}

/day_0509_01/src/com/qst/pojos/User.java

package com.qst.pojos;

public class User {
	// id,userName,userPwd,sex,age
	private int id;
	private String userName;
	private String userPwd;
	private String userRePwd;
	private String sex;
	private int age;

	public User() {
		super();
	}

	public User(String userName, String userPwd, String userRePwd, String sex, int age) {
		super();
		this.userName = userName;
		this.userPwd = userPwd;
		this.userRePwd = userRePwd;
		this.sex = sex;
		this.age = age;
	}

	public User(int id, String userName, String userPwd, String userRePwd, String sex, int age) {
		super();
		this.id = id;
		this.userName = userName;
		this.userPwd = userPwd;
		this.userRePwd = userRePwd;
		this.sex = sex;
		this.age = age;
	}

	public User(int id, String userName, String userPwd, String sex, int age) {
		super();
		this.id = id;
		this.userName = userName;
		this.userPwd = userPwd;
		this.sex = sex;
		this.age = age;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserPwd() {
		return userPwd;
	}

	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getUserRePwd() {
		return userRePwd;
	}

	public void setUserRePwd(String userRePwd) {
		this.userRePwd = userRePwd;
	}

	/**
	 * 重写toString方法
	 */
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("用户Id " + id + "<br>");
		sb.append("用户名 " + userName + "<br>");
		sb.append("密码 " + userPwd + "<br>");
		sb.append("性别 " + (sex.equals("1")?'男':'女') + "<br>");
		sb.append("年龄 " + age + "<br>");
		sb.append("<a href=\"/day_0509_01/UserAction?method=userList\">隐藏</a>");
		return sb.toString();
	}

}

/day_0509_01/src/com/qst/pojos/Page.java

package com.qst.pojos;

import java.util.List;

public class Page<T> {
	private Integer pageNow;
//	private Integer pageCount;
	private Integer rowCount;
	private Integer pageSize;
	private List<T> pageRow;
	
	public Page() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Page(Integer pageNow,Integer rowCount, Integer pageSize, List<T> pageRow) {
		super();
		this.pageNow = pageNow;
		this.rowCount = rowCount;
		this.pageSize = pageSize;
		this.pageRow = pageRow;
	}

	public Integer getPageNow() {
		return pageNow;
	}
	public void setPageNow(Integer pageNow) {
		this.pageNow = pageNow;
	}
	public Integer getPageCount() {
		Integer pageCount = rowCount%pageSize==0?rowCount/pageSize:(rowCount/pageSize+1);
		return pageCount;
	}
	/*public void setPageCount(Integer pageCount) {
		this.pageCount = pageCount;
	}*/
	public Integer getRowCount() {
		return rowCount;
	}
	public void setRowCount(Integer rowCount) {
		this.rowCount = rowCount;
	}
	public Integer getPageSize() {
		return pageSize;
	}
	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}
	public List<T> getpageRow() {
		return pageRow;
	}
	public void setpageRow(List<T> pageRow) {
		this.pageRow = pageRow;
	}
	
}

/day_0509_01/src/com/qst/dao/UserDao.java

package com.qst.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.qst.pojos.Page;
import com.qst.pojos.User;
import com.qst.util.DBUtil;

public class UserDao {
	DBUtil dbUtil = null;

	public UserDao() {
		super();
		dbUtil = new DBUtil();
	}

	public int save(User user) {
		// id,userName,userPwd,sex,age
		String sql = "insert into t_User(userName,userPwd,sex,age) values(?,?,?,?)";
		Object[] param = { user.getUserName(), user.getUserPwd(), user.getSex(), user.getAge() };
		dbUtil.getConnection();
		int result = dbUtil.executeUpdate(sql, param);
		dbUtil.closeAll();
		return result;
	}

	public List<User> findAll() {
		List<User> users = new ArrayList<User>();
		String sql = "select * from t_user";
		dbUtil.getConnection();
		ResultSet rs = dbUtil.executeQuery(sql, null);
		try {
			while (rs.next()) {
				User user = new User(rs.getInt("id"), rs.getString("userName"), rs.getString("userPwd"),
						rs.getString("sex"), rs.getInt("age"));
				users.add(user);
			}
			return users;
		} catch (SQLException e) {
			e.printStackTrace();
			return users;
		} finally {
			dbUtil.closeAll();
		}
	}

	/**
	 * 查询方法
	 * 
	 * @param userName
	 * @return User对象
	 */
	public User readUser(String userName) {
		User user = null;
		String sql = "select * from t_user where userName=?";
		Object[] param = { userName };
		dbUtil.getConnection();
		ResultSet rs = dbUtil.executeQuery(sql, param);
		try {
			if (rs.next()) {
				user = new User(rs.getInt("id"), rs.getString("userName"), rs.getString("userPwd"), rs.getString("sex"),
						rs.getInt("age"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dbUtil.closeAll();
		}
		return user;
	}

	/**
	 * 修改方法
	 * 
	 * @param user
	 * @return result
	 */
	public int updateUser(User user) {
		// id,userName,userPwd,sex,age
		String sql = "update t_user set userPwd=?,sex=?,age=? where userName=?";
		Object[] param = { user.getUserPwd(), user.getSex(), user.getAge(), user.getUserName() };
		dbUtil.getConnection();
		int result = dbUtil.executeUpdate(sql, param);
		dbUtil.closeAll();
		return result;
	}

	/**
	 * 删除方法
	 * 
	 * @param id
	 *            userId
	 * @return result
	 */
	public int deleteUser(Integer id) {
		String sql = "delete from t_user where id=?";
		Object[] param = { id };
		dbUtil.getConnection();
		int result = dbUtil.executeUpdate(sql, param);
		dbUtil.closeAll();
		return result;
	}

	public Page<User> queryPage(int pageSize, int pageNow) {
		Page<User> page = new Page<User>();
		page.setPageSize(pageSize);
		page.setPageNow(pageNow);
		String sql = "select count(*) from t_user";
		dbUtil.getConnection();
		ResultSet rs = dbUtil.executeQuery(sql, null);
		try {
			rs.next();
			Integer rowCount = rs.getInt(1);
			page.setRowCount(rowCount);
			List<User> pageRow = new ArrayList<User>();
			String preparedSql = "select * from t_user limit ?,?";
			Object[] param = { page.getPageSize() *( page.getPageNow() - 1), page.getPageSize() };
			ResultSet res = dbUtil.executeQuery(preparedSql, param);
			while (res.next()) {
				User user = new User(res.getInt("id"), res.getString("userName"), res.getString("userPwd"),
						res.getString("sex"), res.getInt("age"));
				pageRow.add(user);
			}
			page.setpageRow(pageRow);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dbUtil.closeAll();
		}
		return page;
	}
}

/day_0509_01/src/com/qst/service/UserService.java

package com.qst.service;

import java.util.List;

import com.qst.dao.UserDao;
import com.qst.pojos.Page;
import com.qst.pojos.User;

public class UserService {
	UserDao userDao = null;

	public UserService() {
		super();
		this.userDao = new UserDao();
	}

	// 业务逻辑
	public boolean addUser(User user) {
		// 判断用户的年龄是否大于16周岁
		// 判断一下用户的密码是否包含特殊字符(汉子)
		// 判断用户的密码和确认密码相同
		// return userDao.save(user)>0;
		int result = userDao.save(user);
		if (result > 0) {
			return true;
		}
		return false;
	}

	public List<User> getAllUserInfo() {
		return userDao.findAll();
	}
	
	public User readUser(String userName) {
		return userDao.readUser(userName);
	}
	
	public boolean updateUser(User user) {
		int result = userDao.updateUser(user);
		if (result > 0) {
			return true;
		}
		return false;
	}

	public boolean deleteUser(Integer id) {
		int result = userDao.deleteUser(id);
		if (result > 0) {
			return true;
		}
		return false;
	}
	
	public Page<User> queryPage(Integer pageSize, Integer pageNow) {
		return userDao.queryPage(pageSize, pageNow);
	}
	
}

/day_0509_01/src/com/qst/action/UserAction.java

package com.qst.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.qst.pojos.Page;
import com.qst.pojos.User;
import com.qst.service.UserService;

public class UserAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public UserAction() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String method = request.getParameter("method");
		if ("addUser".equals(method)) {
			addUser(request, response);
		} else if ("userList".equals(method)) {
			showUserList(request, response);
		} else if ("readUser".equals(method)) {
			readUser(request, response);
		} else {
			deleteUser(request, response, method);
		}
	}

	private void showUserList(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		UserService userService = new UserService();
		// List<User> userList = userService.getAllUserInfo();
		String pageNow = request.getParameter("pageNow");
		if (pageNow == null||pageNow.isEmpty()) {
			Page<User> userList = userService.queryPage(5, 1);
			request.setAttribute("userList", userList);
		}else {
			Page<User> userList = userService.queryPage(5, Integer.parseInt(pageNow));
			request.setAttribute("userList", userList);
		}
		request.getRequestDispatcher("/userList.jsp").forward(request, response);
	}

	private void addUser(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String userName = request.getParameter("userName");
		String userPwd = request.getParameter("userPwd");
		String userRePwd = request.getParameter("userRePwd");
		String ageStr = request.getParameter("age");
		String sex = request.getParameter("sex");
		if(userName==null||userPwd==null||userRePwd==null||ageStr==null||sex==null) {
			request.getSession().setAttribute("message", "更新失败,请重新填写!");
			response.sendRedirect("/day_0509_01/addUser.jsp");
		}else {
			User user = new User(userName, userPwd, userRePwd, sex, Integer.parseInt(ageStr));
			UserService userService = new UserService();
			// boolean flag = userService.booleanUser(userName);
			User users = userService.readUser(userName);
			if (users != null) {
				userService.updateUser(user);
			} else {
				userService.addUser(user);
			}
			showUserList(request, response);
		}
	}

	private void readUser(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String userName = request.getParameter("userName");
		UserService userService = new UserService();
		User users = userService.readUser(userName);
		request.setAttribute("users", users.toString());
		showUserList(request, response);
	}

	private void deleteUser(HttpServletRequest request, HttpServletResponse response, String method)
			throws ServletException, IOException {
		UserService userService = new UserService();
		Integer id = Integer.parseInt(method);
		userService.deleteUser(id);
		showUserList(request, response);
	}

}

/day_0509_01/WebContent/addUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<font color="red">${message}</font>
	<form action="/day_0509_01/UserAction" method="post">
		<table>
			<tr>
				<th colspan="2">添加用户界面</th>
			</tr>
			<tr>
				<td>用户名</td>
				<td><input type="text" name="userName" placeholder="请输入用户名" /></td>
			</tr>
			<tr>
				<td>密码</td>
				<td><input type="text" name="userPwd" placeholder="请输入密码" /></td>
			</tr>
			<tr>
				<td>确认密码</td>
				<td><input type="text" name="userRePwd" placeholder="请输入密码" /></td>
			</tr>
			<tr>
				<td>年龄</td>
				<td><input type="number" name="age" min="16" max="100" /></td>
			</tr>
			<tr>
				<td>性别</td>
				<td><input type="radio" name="sex" value="1" />男 <input
					type="radio" name="sex" value="" />女</td>
			</tr>
			<tr>
				<td colspan="2"><input type="hidden" value="addUser"
					name="method" /> <input type="submit" value="更新数据" /></td>
			</tr>
		</table>
	</form>
</body>
</html>

/day_0509_01/WebContent/userList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="com.qst.pojos.Page" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body style="text-align: center">
	<form action="/day_0509_01/UserAction" method="post">
		用户名:<input type="text" name="userName" /> <input type="hidden"
			value="readUser" name="method"> <input type="submit"
			value="查询">
	</form>
	${users}
	<br />
	<table border="1" cellspacing="0" style="width: 75%"  align="center">
		<tr>
			<th>ID</th>
			<th>用户名</th>
			<th>密码</th>
			<th>性别</th>
			<th>年龄</th>
			<th>更新</th>
			<th>删除</th>
		</tr>
		<c:forEach items="${userList.pageRow}" var="user">
			<tr>
				<td>${user.id }</td>
				<td>${user.userName }</td>
				<td>${user.userPwd }</td>
				<td>${user.sex==0?'女':'男' }</td>
				<td>${user.age }</td>
				<td><a href="addUser.jsp">更新</a></td>
				<td><a href="/day_0509_01/UserAction?method=${user.id }">删除</a></td>
			</tr>
		</c:forEach>
	</table>
	<br />
	<c:out value="第${userList.pageNow}页/共${userList.pageCount}页"></c:out>
	<a href="<c:url value="UserAction?method=userList&pageNow=${1}" />">首页</a>
	<c:if test="${userList.pageNow > 1}">
		<a href="<c:url value="UserAction?method=userList&pageNow=${userList.pageNow-1}" />">上一页</a>
	</c:if>
	<c:choose>
		<c:when test="${userList.pageCount < 5 }">
			<c:set var="begin" value="1" />
			<c:set var="end" value="${userList.pageCount}" />
		</c:when>
		<c:otherwise>
			<c:set var="begin" value="${userList.pageNow - 2 }" />
			<c:set var="end" value="${userList.pageNow + 2 }" />
			<c:if test="${begin < 1 }">
				<c:set var="begin" value="${1}" />
				<c:set var="end" value="${5}" />
			</c:if>
			<c:if test="${end > userList.pageCount }">
				<c:set var="begin" value="${userList.pageCount-4}" />
				<c:set var="end" value="${userList.pageCount}" />
			</c:if>
		</c:otherwise>
	</c:choose>
	<c:forEach var="i" begin="${begin }" end="${end }">
		<c:choose>
			<c:when test="${i eq userList.pageNow }">
				[${i}]
			</c:when>
			<c:otherwise>
				<a href="<c:url value="UserAction?method=userList&pageNow=${i}" />">[${i}]</a>
			</c:otherwise>
		</c:choose>
	</c:forEach>
	<c:if test="${userList.pageNow < userList.pageCount}">
		<a href="<c:url value="UserAction?method=userList&pageNow=${userList.pageNow+1}" />">下一页</a>
	</c:if>
	<a href="<c:url value="UserAction?method=userList&pageNow=${userList.pageCount}" />">尾页</a>
</body>
</html>

/day_0509_01/WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>day_0509_01</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>UserAction</servlet-name>
  	<servlet-class>com.qst.action.UserAction</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>UserAction</servlet-name>
  	<url-pattern>/UserAction</url-pattern>
  </servlet-mapping>
</web-app>

t_user.sql

/*
SQLyog Ultimate - MySQL GUI v8.2 
MySQL - 5.5.27 
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;

create table `t_user` (
	`id` double ,
	`userName` varchar (150),
	`userPwd` varchar (150),
	`sex` varchar (6),
	`age` double 
); 
insert into `t_user` (`id`, `userName`, `userPwd`, `sex`, `age`) values('25','wq6','ewqe','1','32');
insert into `t_user` (`id`, `userName`, `userPwd`, `sex`, `age`) values('26','wq7','ewqe','1','32');
insert into `t_user` (`id`, `userName`, `userPwd`, `sex`, `age`) values('27','wq8','ewqe','1','32');
insert into `t_user` (`id`, `userName`, `userPwd`, `sex`, `age`) values('28','wq9','ewqe','1','32');
insert into `t_user` (`id`, `userName`, `userPwd`, `sex`, `age`) values('29','wq10','ewqe','1','32');
insert into `t_user` (`id`, `userName`, `userPwd`, `sex`, `age`) values('30','wq11','ewqe','1','32');

项目截图





优点与不足

  1. 相比于上一个项目,MVC设计模式更加规范,有种框架的感觉,但没有使用任何框架。
  2. DBUtil工具类封装的功能更加全面,减少了代i码的冗余。
  3. 终于实现了只用一个Servlet(UserAction)类来控制整个项目,这得益于使用了隐藏标签分模块化实现方法。
  4. 分页技术更加完善,这与上一篇文章的分页方法完全不同,如果看不懂本项目的方法可以先参考上一篇文章里的项目是如何分页的。
  5. 最后,我认为这是自己写的最满意的JavaWeb小项目,打算自己当模板使用的,希望对你有所帮助。
  6. 项目源码:点击打开链接
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
http://xidong.net/File001/File_59582.html 下载地址 servlet第0讲: 韩顺平 j2ee视频servlet第0讲山.wmv 视频描述: 目前比较系统的j2ee视频教程比较少,我自己在学习和教授java ee的过程中,走过了许少弯路,历经彷徨和郁闷,希望把自己对java ee 理解记录下来 ,希望这部教程可以为学习java ee的同志们起到抛砖引玉的作用,让大家可以很快步入到java ee的殿堂. 韩顺平_j2ee视频实战教程servlet第1讲初识.wmv 视频描述: 我们将通过完成一个用户管理系统来讲解Servlet , 该项目用纯servlet完成,是一个很好的练习servlet技术的案例.该项目的操作人员有两类:管理员 可以对用户进行增,删除,修改,查询普通 韩顺平 j2ee视频实战教程servlet第2讲(上集).wmv 视频描述: (-) servlet体系结构的介绍(二) servlet的网络拓扑结构(三) servlet的几个实例(四) servlet的生命周期(五) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程servlet第2讲(下集).wmv 视频描述-) servlet体系结构的介绍(二) servlet的网络拓扑结构(三) servlet的几个实例(四) servlet的生命周期(五) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程servlet第3讲(上集).wmv 1.同一用户的不同页面数据共享1.1 cookie技术1.2 sendRedirect()转向1.3 隐藏表单1.4 session技术 韩顺平 j2ee视频实战教程servlet第3讲(中集).wmv 视频描述:1.同一用户的不同页面数据共享 1.1 cookie技术 1.2 sendRedirect()转向 1.3 隐藏表单 1.4 session技术 2.servlet中如何操作数据库 韩顺平 j2ee视频实战教程servlet第3讲(下集).wmv 视频描述 : 1.同一用户的不同页面数据共享 1.1 cookie技术 1.2 sendRedirect()转向 1.3 隐藏表单 1.4 session技术 韩顺平 j2ee视频实战教程servlet第4讲.wmv 视频描述: 1 如何在servlet中显示图片 2 分页技术详解 3 用户登录系统功能改进 韩顺平 j2ee视频实战教程servlet第5讲(上集).wmv 视频描述: (一) Cookie的讲解和使用 (二) Cookie和Session的比较 (三) 网站框架的改进(四) 用户登录系统功能改进 韩顺平 j2ee视频实战教程servlet第5讲(下集).wmv 视频描述: (一) Cookie的讲解和使用 (二) Cookie和Session的比较 (三) 网站框架的改进 (四) 用户登录系统功能改进 韩顺平 j2ee视频实战教程servlet第6讲(上集).wmv 视频描述: (一) ServletContext的讲解和使用 (二) servlet中如何操作文件 (三)增加网站计数器 韩顺平 j2ee视频实战教程servlet第6讲(下集).wmv 视频描述: (一) ServletContext的讲解和使用 (二) servlet中如何操作文件 (三)增加网站计数器 韩顺平 j2ee视频实战教程servlet第7讲(上集).wmv 视频描述: (一)美化管理系统界面,完善页面 这个我们参考.doc文档进行 (二) 管理系统功能改进 增加对用户的查找、增加、删除和修改的功能,这样我们这个用户登录系统就成了一个用户管理系统,而且是完全用servlet实现的. 韩顺平 j2ee视频实战教程servlet第7讲(下集).wmv 视频描述: (一)美化管理系统界面,完善页面 这个我们参考.doc文档进行 (二) 管理系统功能改进 增加对用户的查找、增加、删除和修改的功能,这样我们这个用户登录系统就成了一个用户管理系统,而且是完全用servlet实现的. 韩顺平 j2ee视频实战教程servlet第8讲.wmv 视频描述: tomcat的配置: 1.如何修改tomcat的端口 2.如何设置虚拟目录 3.如何给tomcat的管理员设置密码 4.如何设置数据源和连接池(公司常用!) ************************servlet部分完**************************** 韩顺平 j2ee视频实战教程jsp第1讲(上集).wmv 视频描述: (一) java EE核心十三种技术介绍 (二) java EE程序员修炼成精的法门(卖油翁的故事) (三) jsp版本的用户管理系统演示 (四) jsp的概述(基本语法) (五) jsp的运行原理(还是hello.jsp) (六) jsp版的计算器 6.1 jsp中如何使用js(javascript)和css技术.. 韩顺平 j2ee视频实战教程jsp第1讲(下集).wmv 视频描述: (一) java EE核心十三种技术介绍 (二) java EE程序员修炼成精的法门(卖油翁的故事) (三) jsp版本的用户管理系统演示 (四) jsp的概述(基本语法) (五) jsp的运行原理(还是hello.jsp) (六) jsp版的计算器 6.1 jsp中如何使用js(javascript)和css技术.. 韩顺平 j2ee视频实战教程jsp第2讲(上集).wmv 视频描述: (一) 在同一jsp页面提交和接收数据 (二) eclipse(myeclipse)发工具 1.0介绍 1.1安装 1.2配置 1.3使用 (三) model1模式 (四) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程jsp第2讲(中集).wmv 视频描述: (一) 在同一jsp页面提交和接收数据 (二) eclipse(myeclipse)发工具 1.0介绍 1.1安装 1.2配置 1.3使用 (三) model1模式 (四) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程jsp第2讲(下集).wmv 视频描述: (一) 在同一jsp页面提交和接收数据 (二) eclipse(myeclipse)发工具 1.0介绍 1.1安装 1.2配置 1.3使用 (三) model1模式 (四) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程jsp第3讲(上集).wmv 视频描述: (一) 用户登录系统框架改进 1.0 model1(纯jsp)模式的反思 1.1 model1(结合java class)模式 (二) 用户登录系统框架再改进 2.1 mvc模式 韩顺平 j2ee视频实战教程jsp第3讲(下集).wmv 视频描述: (一) 用户登录系统框架改进 1.0 model1(纯jsp)模式的反思 1.1 model1(结合java class)模式 (二) 用户登录系统框架再改进 2.1 mvc模式 韩顺平 j2ee视频实战教程jsp第4讲.wmv 视频描述: (一)session技术讲解 (二)数据库中的用户名是中文名. 韩顺平 j2ee视频实战教程jsp第5讲(上集).wmv 视频描述: (一)美化管理系统界面,完善页面 这个我们参考.doc文档进行 (二) 管理系统功能改进 增加对用户的查找、增加、删除和修改的功能,这样我们这个用户登录系统就成了一个用户管理系统,并且使用mvc模式发的。 韩顺平 j2ee视频实战教程jsp第5讲(下集).wmv 视频描述: (一)美化管理系统界面,完善页面 这个我们参考.doc文档进行 (二) 管理系统功能改进 增加对用户的查找、增加、删除和修改的功能,这样我们这个用户登录系统就成了一个用户管理系统,并且使用mvc模式发的。 韩顺平 j2ee视频实战教程jsp第6讲预告.wmv 视频描述: 1.网上商城(mvc) 1.1购物车、用户注册、登录、验证码 1.2订单管理、后台、动态广告 1.3javamail 1.4javascript 1.5css/ajax 1.6文件上传下载 1.7网页如何布局(table+css)(div+css) 2. 项目分析、数据库设计、界面设计 3. 授课特点(主要使用dreamweaver设计界面) 4. 我的要求 韩顺平 j2ee视频实战教程jsp第6讲(上集).wmv 视频描述: (一) 时尚购物网需求分析(二) 时尚购物网界面设计(三) 时尚购物网数据库初步设计 (四) 涉及到的发工具和技术 韩顺平 j2ee视频实战教程jsp第6讲(下集).wmv 视频描述: (一) 时尚购物网需求分析(二) 时尚购物网界面设计(三) 时尚购物网数据库初步设计 (四) 涉及到的发工具和技术 韩顺平 j2ee视频实战教程jsp第7讲(上集).wmv 视频描述: (一) 涉及到的发工具和技术 (二) 继续发,完善功能 韩顺平 j2ee视频实战教程jsp第7讲(下集).wmv 视频描述: (一) 涉及到的发工具和技术 1.div+css 布局 2.table+css 布局 3.混合布局,两种方式合用 (二) 继续发,完善功能 1.显示货物具体信息 2.jsp中如何使用js的技术 3.首页面增加分页功能 4.用户登录、注册界面设计 韩顺平 j2ee视频实战教程jsp第8讲(上集).wmv 视频描述: (一)继续发,完善功能 1.将商品添加到购物车 2.将商品从购物车删除 3.清空购物车 4.修改购买商品的数量/计算总价 5.用户登录 6.显示用户信息【确认订单前】 7.购物流程设计(mvc[界面、控制器、模型]) 韩顺平 j2ee视频实战教程jsp第8讲(下集).wmv 视频描述: (一)继续发,完善功能 1.将商品添加到购物车 2.将商品从购物车删除 3.清空购物车 4.修改购买商品的数量/计算总价 5.用户登录 6.显示用户信息【确认订单前】 7.购物流程设计(mvc[界面、控制器、模型]) 韩顺平 j2ee视频实战教程jsp第9讲(上集).wmv 视频描述: (一)继续发,完善功能 1.用户登录功能实现 2.显示用户联系方式、订单情况 3.订单表的设计/订单的生成 4.发送电子邮件(javamail)到用户的信箱 5.购物流程设计(mvc[界面、控制器、模型]) (二)待完成功能 1.后台商品管理 2.后台用户管理 3.用户注册功能 4.网站公告管理 5.网站最受用户欢迎的书籍(动态) 韩顺平 j2ee视频实战教程jsp第9讲(中集).wmv 视频描述: (一)继续发,完善功能 1.用户登录功能实现 2.显示用户联系方式、订单情况 3.订单表的设计/订单的生成 4.发送电子邮件(javamail)到用户的信箱 5.购物流程设计(mvc[界面、控制器、模型]) (二)待完成功能 1.后台商品管理 2.后台用户管理 3.用户注册功能 4.网站公告管理 5.网站最受用户欢迎的书籍(动态) 韩顺平 j2ee视频实战教程jsp第9讲(下集).wmv 视频描述: (一)继续发,完善功能 1.用户登录功能实现 2.显示用户联系方式、订单情况 3.订单表的设计/订单的生成 4.发送电子邮件(javamail)到用户的信箱 5.购物流程设计(mvc[界面、控制器、模型]) (二)待完成功能 1.后台商品管理 2.后台用户管理 3.用户注册功能 4.网站公告管理 5.网站最受用户欢迎的书籍(动态)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值