JavaWeb实验 JavaBean与Servlet

实验目的

  1. 掌握编写JavaBean的规范,学会如何在JSP中使用JavaBean;
  2. 掌握JSP、JavaBean和Servlet综合应用的基本原则。

实验内容

创建一个WEB应用,综合利用JSP、JavaBean和Servlet技术实现用户登录(注册功能选做)。程序至少包含:一个登录页面login.jsp,一个欢迎页面hello.jsp,一个servlet和一个bean。参考实验7,运用实验中创建数据库和表的方法,完成如下要求:

  1. 用户在login.jsp中输入用户名和密码,数据提交给servlet。
  2. 设计Bean,封装数据库表user中一个用户的所有信息。
  3. servlet完成用户身份验证(通过从表中条件检索来验证)。如果用户合法,将该用户所有的信息放入上述bean的实例中,并存入session,转到hello.jsp;否则转到error.jsp
  4. hello.jsp从session中取出用户信息并显示。
  5. error.jsp显示错误信息“用户名或密码错误!”,该页面中包含回到login.jsp的链接。

Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>JavaWeb</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>Login</servlet-name>
    <servlet-class>gdpu.com.Login</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/login.html</url-pattern>
  </servlet-mapping>

</web-app>
Login.java
package gdpu.com;
import java.sql.*;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Login extends HttpServlet {
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)  {
		String usernamex = request.getParameter("username");
		String passwordx = request.getParameter("password");
		try {
			Class.forName("com.mysql.jdbc.Driver"); //驱动程序名
			String url = "jdbc:mysql://localhost:3306/实验"; //数据库名
			String username = "root"; //数据库用户名
			String password = "0403"; //数据库用户密码
			Connection conn = DriverManager.getConnection(url, username,password); //连接状态

			if (conn != null) {
				Statement stmt = null;
				ResultSet rs = null;
				stmt = conn.createStatement();
				String sql = "SELECT * FROM user where username='"+usernamex+"' and password='"+passwordx+"'";//查询语句
				rs = stmt.executeQuery(sql);
				

				boolean isTure = false;
				User user =new User();
				while(rs.next()) {
					isTure =true;
					user.setUsername(rs.getString(1));
					user.setPassword(rs.getString(2));
					user.setChinesename(rs.getString(3));
					user.setSex(rs.getString(4));
					user.setRank(rs.getString(5));
				}
			if(isTure) {
				request.getSession().setAttribute("user", user);
				response.sendRedirect("./hello.jsp");
				}
			else {
				response.sendRedirect("./error.jsp"); 
			}
			
			}
			
			
	} catch (Exception e) {
		e.printStackTrace();
	}
		

	}
	
}
User.java
package gdpu.com;

public class User {
	private String username;
	private String password;
	private String chinesename;
	private String sex;
	private String rank;
	/**
	 * @return username
	 */
	public String getUsername() {
		return username;
	}
	/**
	 * @param username 要设置的 username
	 */
	public void setUsername(String username) {
		this.username = username;
	}
	/**
	 * @return password
	 */
	public String getPassword() {
		return password;
	}
	/**
	 * @param password 要设置的 password
	 */
	public void setPassword(String password) {
		this.password = password;
	}
	/**
	 * @return chinesename
	 */
	public String getChinesename() {
		return chinesename;
	}
	/**
	 * @param chinsesname 要设置的 chinesename
	 */
	public void setChinesename(String chinesename) {
		this.chinesename = chinesename;
	}
	/**
	 * @return sex
	 */
	public String getSex() {
		return sex;
	}
	/**
	 * @param sex 要设置的 sex
	 */
	public void setSex(String sex) {
		this.sex = sex;
	}
	/**
	 * @return rank
	 */
	public String getRank() {
		return rank;
	}
	/**
	 * @param rank 要设置的 rank
	 */
	public void setRank(String rank) {
		this.rank = rank;
	}
}
Login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta charset=UTF-8>
<title>GDPU官网登录页面</title>
</head>

<body>
<form action ="./login.html"  method ="post">
	GDPU账号:<input type = "text" style = "width220px;" name = "username"/><br><br>

	账号密码 :<input type = "password" style = "width220px;" name = "password"/><br><br>

	<input type = "submit" style = "width:220px;" value = "登录"/>
</form>
</body>
</html>
Hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="gdpu.com.User" pageEncoding="UTF-8"%>
<!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>LOGIN.hello</title>
</head>
<body>
Welcome:当前登录用户:
<br>
	<%
User user = (User)session.getAttribute("user");
	%>
	<%=user.getChinesename()%>
<br>
	<%=user.getSex()%>
<br>
	<%=user.getRank()%>
</body>
</html>
Error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>LOGIN.error</title>
</head>
<body>
	UserID or password is wrong
</body>
</html>

连接数据库参考代码:
//说明:需要在头部引入java.sql.*包。
try {
		Class.forName("com.mysql.jdbc.Driver"); //驱动程序名
		String url = "jdbc:mysql://localhost:3306/chg"; //数据库名
		String username = "root"; //数据库用户名
		String password = "root"; //数据库用户密码
		Connection conn = DriverManager.getConnection(url, username,
				password); //连接状态

		if (conn != null) {
			out.print("数据库连接成功!");
			out.print("<br />");
			Statement stmt = null;
			ResultSet rs = null;
			stmt = conn.createStatement();
			String sql = "SELECT * FROM teachers;"; //查询语句
			rs = stmt.executeQuery(sql);
			
			out.print("查询结果:");
			out.print("<br />");
			while (rs.next()) {
				out.println(rs.getString(1)+rs.getString(2)+"<br>"); //将查询结果输出  
			}
		} else {
			out.print("连接失败!");
		}
} catch (Exception e) {
		out.print("数据库连接异常!" + e.getStackTrace().toString());
		e.printStackTrace(new java.io.PrintWriter(out));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值