实训第四天

前日回顾:

jdbc 连接数据库:

导入 MySQL jar 包;

建立 jdbc.properties 资源配置文件;

静态代码块封装连接mysql数据库的驱动管理实例;

po 包中新建实体类;Dao 包中建立数据库操作类;测试;

今日内容:

Servlet + jsp 实现登陆,增删改查;
1 . 新建 web 项目(po 包;dao 包;servlet 包;test 包;);
2 . User 实体类;
package com.beiruan.web.po;

public class User {
	private int userId;
	private String username;
	private int sex;
	private String password;
	private int flag;

	public int getUserId() {
		return userId;
	}

	public void setUserId(int userId) {
		this.userId = userId;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public int getSex() {
		return sex;
	}

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

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int getFlag() {
		return flag;
	}

	public void setFlag(int flag) {
		this.flag = flag;
	}

}
DBConnectionUtil 工具类:
private static String jdbcDriver = "";
	private static String jdbcUrl = "";
	private static String jdbcUser = "";
	private static String jdbcPassword = "";
	//静态代码块
	static{
		InputStream is = DBConnectionUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
		Properties p = new Properties();
		try {
			p.load(is);
			jdbcDriver=p.getProperty("jdbcDriver");
			jdbcUrl=p.getProperty("jdbcUrl");
			jdbcUser=p.getProperty("jdbcUser");
			jdbcPassword=p.getProperty("jdbcPassword");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection(){
		Connection conn = null;
		try {
			Class.forName(jdbcDriver);	//注册驱动
			conn=DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);	//获取连接
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	public static void closeSelect(PreparedStatement ps ,ResultSet rs,Connection conn){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally{
				if(ps!=null){
					try {
						ps.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}finally{
						if(conn!=null){
							try {
								conn.close();
							} catch (SQLException e) {
								e.printStackTrace();
							}
						}
					}
				}
			}
		}
 	}
UserDao 数据操作类;

创建 login.jsp 页面:
<form action="userServlet" method="post">
		<div id="warp">
			<div id="yx">
				<div id="yx_h">
					<span class="span1">快速登录</span> <span class="span2">账号密码登录</span>
				</div>
				<div id="yx_b">
					<span><input name="username" type="text"
						placeholder="支持QQ号/邮箱/手机号登录" id="username" /> </span> <span><input
						name="password" type="password" placeholder="QQ密码" /> </span> <span><input
						type="checkbox" class="chbox"><span class="fot">下次自动登录</span>
					</span> <span><input type="submit" class="sub" value="登     录" />
					</span>
				</div>
				<div id="yx_t">
					<span> <a href="javascript:;">忘记密码?</a>  | <a
						href="javascript:;">注册新账号</a> | <a href="javascript:;">意见反馈</a>
					</span>
				</div>
			</div>
		</div>
	</form>
创建 UseServlet.java  :
public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();

		String username = request.getParameter("username");//input 的 name
		String password = request.getParameter("password");
		

		UserDao userdao = new UserDao();
		User user = userdao.getUserByUserNameAndPassword(username, password);
		if (user != null) {
			List<User> lists = userdao.getUsers();
			request.setAttribute("lists",lists);
			request.getRequestDispatcher("/success.jsp").forward(request, response);
			return;
			}
			else{
				request.getRequestDispatcher("/fail.jsp")
				.forward(request, response); // 请求转发
				return;
				}
			}


新建 UserList.jsp 来显示数据:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<table class="bo" border="1">
			<tr>
				<th>用户ID</th>
				<th>用户名字</th>
				<th>用户性别</th>
				<th>用户密码</th>
				<th>用户状态</th>
				<th colspan="2">操作</th>
			</tr>
			<c:forEach var="lists" items="${lists }">
				<tr>
					<td>${lists.userId }</td>
					<td>${lists.username }</td>
					<td>${lists.sex == 1 ? "男" : "女" }</td>
					<td>${lists.password }</td>
					<td>${lists.flag == 1 ? "在线" : "离线" }</td>
				</tr>
			</c:forEach>
		</table>
测试显示:
添加操作项:
<th colspan="2">操作</th>
<td><a href="">修改</a></td>
<td><a href="">删除</a></td>
<h3 id="add"><a style="color: cadetblue;" href="">添加用户</a></h3>
导入 Jquery 包,使用 Ajax 异步刷新删除:
改写servlet:
PrintWriter out = response.getWriter();
		String username = request.getParameter("username");
		String password =request.getParameter("password");
		
		int flag = Integer.parseInt(request.getParameter("flag"));
		switch (flag) {
		case 1:
			User user = new User();
			UserDao userDao = new UserDao();
			userDao.getUserByUserNameAndPassword(username, password);
			if (user!=null) {
				List<User> lists = userDao.getUsers();
				request.setAttribute("lists", lists);
				request.getRequestDispatcher("/success.jsp").forward(request, response);
				return;
			}else {
				request.getRequestDispatcher("/fail.jsp").forward(request, response);
			}
			break;
		case 2:
			int userId = Integer.parseInt(request.getParameter("userId"));
			int rows = userDao.deleteUserByuserId(userId);
			if (rows > 0) {
				out.print("success");
			}else {
				out.print("success");
			}
		default:
			break;
		}
script :
<script type="text/javascript">
	function deleteUserByUserId(userId,obj){
		$.post("userDelServlet",{userId: userId},function(data){
			if(data== "success"){
				alert(data);
				$(obj).parent().parent().remove();
			}
			else{
				alert("fail");
			}
		});
	}
</script>
<a href="javascript:void(0);" οnclick="deleteUserByUserId(${lists.userId },this);"  class="delete">删除</a>
效果:

同样的,另外建立 update ,delete , insert ,select 的servlet ;

request.getRequestDispatcher("/*.jsp").forward(request, response); // 请求转发
response.sendRedirect("/*.jsp"); // 请求重定向,可以跳到其它项目;请求转发的前面会带有项目名
为何在页面中接收不了? 因为request 只是一次请求有效,response.sendRedirect 时已经跳转,所以接收不到

session 一次会话有效,有作用时间(浏览器,时间,换个浏览器,tomcat关闭)
ps : 模糊查询的 sql 语句:
String sql = "SELECT * FROM user WHERE username LIKE CONCAT('%',?,'%')";

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值