javaWeb入门的小应用

最近在学习javaWeb,跟着书上写了一个简单的学生信息管理的小项目,虽然是照着书写的,但是其中还是有很多的值得自己思考的地方,这里就总结分享一下,期望大家可以给我提一些建议,也可以介绍一下自己的心得,有问题的也可以留言讨论一下。

#简单的web学生管理系统

更好的排版地址:https://www.zybuluo.com/Ablechen/note/1511296

Created with Raphaël 2.2.0 index页面 loginServlet 增删改 servlet(对应的实现功能的servlet) loginAction(进行信息显示) yes no

##在项目中需要用到的包

  1. bean(用于封装数据)
  2. servlet(提供动作,逻辑服务)
  3. db(用于连接数据库)
  4. jsp(用于数据的显示,和用户进行交互)

##使用的数据库
mysql
在这里插入图片描述

整合数据
登陆页面
显示信息页
错误显示页
添加学生页面
修改信息页面
进行数据库连接
显示数据功能
增加数据功能
删除数据功能
修改数据功能
找到指定数据
进行修改
学生信息管理
bean
jsp
db
servlet
Student.java
index.jsp
loginServlet.jsp
error.jsp
stuAdd.jsp
stuEdit.jsp
DbConnect.java
LoginServer.java
AddServlet.java
DeleteServlet.java
edit
SelectServlet.java
EditServlet.java

##在实际中值得注意的地方
在整个项目的过程中,有的页面之间需要进行信息的传递,比如通过servlet向loginServlet.jsp页面需要传送数据rs(一个返回结果集),这里使用的就是为session设置属性来保存自己需要的数据。然后进行增删改之后,再更新session的属性,这样就达到了使得loginServlet.jsp页面显示的更新。

还有就是有关PreparedStatement的setString方法的使用

使用setString/setInt之类的方法可以为SQL语句中提供参量,便于动态的执行sql语句

    String sql = "insert into student(name, sex, specialty, grade) values(?, ?, ?, ?)"

其中的每一个问号都是一个需要填充的形参,位置是从1开始的,而不是0

使用隐藏属性提供参数
当有一些参数是下一个页面所必需的,但是又不需要再页面中显示的时候,隐藏属性得到了运用

    <input type="hidden" name=*** value=***>

在jsp页面中和html嵌套使用判断语句进行逻辑控制

    <%if(condition) { %>
    html标签
    <% } else if(condition2) { %>
    html标签
    <% } else if(condition3) { %>
    html标签
    <% } %>

index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生管理系统</title>
</head>
<body>
	<form action="LoginServer" method="post">
		<table align="center" border="1">
			<tr>
				<td colspan="2" align="center">管理员登陆界面</td>
			</tr>
			<tr>
				<td>用户名:</td>
				<td>
					<input type="text" name="admin">
				</td>
			</tr>
			<tr>
				<td>密码:</td>
				<td>
					<input type="password" name="upwd">
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="登陆">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>    

loginAction.jsp

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
	ResultSet rs = (ResultSet) session.getAttribute("rs");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生管理系统</title>
</head>
<body>
	<table align="center" border="1">
		<tr>
			<td align="center" colspan="6">学生信息</td>
		</tr>
		<tr>
			<td>姓名</td>
			<td>性别</td>
			<td>专业</td>
			<td>年级</td>
			<td align="center" colspan="2">操作
			</td>
		</tr>
		<%
			while(rs.next()){
		%>
		<tr>
			<td><%=rs.getString("name") %></td>
			<td><%=rs.getString("sex") %></td>
			<td><%=rs.getString("specialty") %></td>
			<td><%=rs.getString("grade") %></td>
			<td>
				<a href="SelectServlet?id=<%=rs.getInt("id") %>">修改</a>
			</td>
			<td>
				<!-- 这里使用了javascript函数 -->
				<a href="DeleteServlet?id=<%=rs.getInt("id") %>" onclick
				= "return confirm('确定要删除吗?');">删除</a>
			</td>
		</tr>
		<%
			}
		%>
		<tr>
			<td align="center" colspan="6">
				<a href="stuAdd.jsp">添加</a>
			</td>
		</tr>
	</table>
</body>
</html>

stuAdd.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加学生信息</title>
</head>
<body>
	<form action="AddServlet" method="post">
		<table align="center">
			<tr>
				<td colspan="2">添加学生信息</td>
			</tr>
			<tr>
				<td>学号</td>
				<td>
					<input type="text" name="unumber">
				</td>
			</tr>
			<tr>
				<td>姓名</td>
				<td>
					<input type="text" name="uname">
				</td>
			</tr>
			<tr>
				<td>性别</td>
				<td>
					<input type="radio" name="ugender" value="男">男
					<input type="radio" name="ugender" value="女">女
				</td>
			</tr>
			<tr>
				<td>专业</td>
				<td>
					<input type="text" name="specialty">
				</td>
			</tr>
			<tr>
				<td>年级</td>
				<td>
				<select name="ugrade">
					<option value="大一">大一</option>
					<option value="大二">大二</option>
					<option value="大三">大三</option>
					<option value="大四">大四</option>
				</select>
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="添加"> 
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

stuEdit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="bean.Student" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改学生信息</title>
</head>
<%
	Student stu = (Student) session.getAttribute("stu");
%>
<body>
	<form action="EditServlet" method="post">
		<table align="center" border="1">
			<tr>
				<td colspan="2">
					<input type="hidden" name="unumber" value=<%=stu.getId() %>>
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">修改学生信息</td>
			</tr>
			<tr>
				<td>用户名:</td>
				<td>
					<input type="text" name="uname" value=<%=stu.getName() %>>
				</td>
			</tr>
			<tr>
				<td>性别:</td>
					<% if(stu.getSex().equals("男")) { %>
					<td>
						<input type="radio" name="ugender" value="男" checked="checked">男
						<input type="radio" name="ugender" value="女">女
					</td>
					<% }else{ %>
					<td>
						<input type="radio" name="ugender" value="男">男
						<input type="radio" name="ugender" value="女" checked="checked">女
					</td>
					<% } %>
			</tr>
			<tr>
				<td>专业</td>
				<td>
					<input type="text" value=<%=stu.getSpecialty() %> name="specialty">
				</td>
			</tr>
			<tr>
				<td>专业</td>
				<% if(stu.getGrade().equals("大一")) { %>
				<td>
					<select name="ugrade">
						<option selected="selected">大一</option>
						<option>大二</option>
						<option>大三</option>
						<option>大四</option>
					</select>
				</td>
				
				<% }else if(stu.getGrade().equals("大二")){ %>			
				<td>
					<select name="ugrade">
						<option>大一</option>
						<option selected="selected">大二</option>
						<option>大三</option>
						<option>大四</option>
					</select>
				</td>
				<% }else if(stu.getGrade().equals("大三")){ %>			
				<td>
					<select name="ugrade">
						<option>大一</option>
						<option>大二</option>
						<option selected="selected">大三</option>
						<option>大四</option>
					</select>
				</td>
				<% }else if(stu.getGrade().equals("大四")){ %>			
				<td>
					<select name="ugrade">
						<option>大一</option>
						<option>大二</option>
						<option>大三</option>
						<option selected="selected">大四</option>
					</select>
				</td>
				<% } %>	
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="修改">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>error</title>
</head>
<body>
	<%
		String message = (String) session.getAttribute("message");
		out.println(message);
	%>
</body>
</html>

AddServlet.java

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bean.Student;
import db.DbConnect;

@WebServlet(urlPatterns = "/AddServlet")
public class AddServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		req.setCharacterEncoding("utf-8");
		PrintWriter out = resp.getWriter();
		//获得需要添加的对应字段的值
		int number = Integer.parseInt(req.getParameter("unumber"));
		String name = req.getParameter("uname");
		String sex = req.getParameter("ugender");
		String specialty = req.getParameter("specialty");
		String grade = req.getParameter("ugrade");
		
		//使用bean
		Student stu = new Student(name, sex, specialty, grade, number);
		//对数据库的数据进行修改
		Connection con = DbConnect.getConnection();
		//创建带有参数的SQL语句
		String sql = "INSERT INTO student(id, name, sex, specialty, grade) VALUES(?, ?, ?, ?, ?)";
		PreparedStatement ps = null ; 
		try {
			ps = con.prepareStatement(sql);
			ps.setInt(1, stu.getId());
			ps.setString(2, stu.getName());
			ps.setString(3, stu.getSex());
			ps.setString(4, stu.getSpecialty());
			ps.setString(5, stu.getGrade());
			int i = ps.executeUpdate();
			HttpSession session = req.getSession();
			//如果添加成功跳转到显示页面进行显示
			if(i==1) {
				String sql1 = "select * from student";
				ps = con.prepareStatement(sql1);
				ResultSet rs = ps.executeQuery();
				//对于session的属性进行更新
				session.setMaxInactiveInterval(7200);
				session.setAttribute("rs", rs);
				resp.sendRedirect("loginAction.jsp");
			}else {
				//添加失败的时候进入失败页面
				session.setAttribute("message", "添加失败");
				resp.sendRedirect("error.jsp");
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}

}

DeleteServlet.java

package servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import db.DbConnect;
@WebServlet(urlPatterns = "/DeleteServlet")
public class DeleteServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		int id = Integer.parseInt(req.getParameter("id"));
		String sql = "DELETE FROM student WHERE id = ?";
		Connection con = DbConnect.con ;
		PreparedStatement ps = null ; 
		ResultSet rs = null ; 
		HttpSession session = req.getSession() ; 
		//进行删除操作
		try {
			ps = con.prepareStatement(sql);
			ps.setInt(1, id);
			int i = ps.executeUpdate() ;
			if(i==1) {
				sql = "SELECT * FROM student" ;
				ps = con.prepareStatement(sql);
				rs = ps.executeQuery() ;
				//重新设置session属性
				session.setMaxInactiveInterval(7200);
				session.setAttribute("rs", rs);
				resp.sendRedirect("loginAction.jsp");
			}else {
				session.setAttribute("message", "删除失败!");
				resp.sendRedirect("error.jsp");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}

}

EditServlet.java

package servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bean.Student;
import db.DbConnect;

@WebServlet(urlPatterns = "/EditServlet")
public class EditServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		//获得修改后的值
		int id = Integer.parseInt(req.getParameter("unumber"));
		String name = req.getParameter("uname");
		String sex = req.getParameter("ugender");
		String specialty = req.getParameter("specialty");
		String grade = req.getParameter("ugrade");
		Student stu = new Student(name, sex, specialty, grade, id);
		//找到需改的信息
		String sql = "UPDATE student set name=?, sex=?, specialty=?, grade=? WHERE id = ? ";
		Connection con = DbConnect.con;
		ResultSet rs = null ; 
		PreparedStatement ps = null ;
		try {
			ps = con.prepareStatement(sql);
			ps.setString(1, stu.getName());
			ps.setString(2, stu.getSex());
			ps.setString(3, stu.getSpecialty());
			ps.setString(4, stu.getGrade());
			ps.setInt(5, id);
			int i = ps.executeUpdate();
			HttpSession session = req.getSession();
			if(i==1) {
				sql = "SELECT * FROM student";
				ps = (PreparedStatement) con.prepareStatement(sql);
				rs = ps.executeQuery();
				//设置有效时长
				session.setMaxInactiveInterval(7200);
				session.setAttribute("rs", rs);
				resp.sendRedirect("loginAction.jsp");
			}else {
				resp.sendRedirect("error.jsp");
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}

}

LoginServer.java

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import db.DbConnect;
@WebServlet(urlPatterns = "/LoginServer")
public class LoginServer extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		req.setCharacterEncoding("utf-8");
		PrintWriter out = resp.getWriter();
		
		//判断是否为管理员
		String admin = req.getParameter("admin");
		String pwd = req.getParameter("upwd");
		if(admin.equals("admin")&&pwd.equals("123")) {
			//获取数据库的连接
			Connection con = DbConnect.getConnection();
			String sql = "select * from student";
			PreparedStatement ps = null ; 
			ResultSet rs = null ; 
			try {
				ps = (PreparedStatement) con.prepareStatement(sql);
				rs = ps.executeQuery();
				//设置有效时长
				HttpSession session = req.getSession();
				session.setMaxInactiveInterval(7200);
				session.setAttribute("rs", rs);
				resp.sendRedirect("loginAction.jsp");
			}catch (Exception e) {
				e.printStackTrace();
			}
		}else {
			resp.sendRedirect("index.jsp");
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}

}

SelectServlet.java

package servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bean.Student;
import db.DbConnect;

@WebServlet(urlPatterns = "/SelectServlet")
public class SelectServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		int id = Integer.parseInt(req.getParameter("id"));
		//查找需要修改的信息
		String sql = "SELECT * FROM student WHERE id = ? ";
		Connection con = DbConnect.con;
		ResultSet rs = null ; 
		PreparedStatement ps = null ;
		//为session设置属性做准备,便于传输需要的信息
		Student stu = null ; 
		try {
			ps = con.prepareStatement(sql);
			ps.setInt(1, id);
			//获得结果的集合
			rs = ps.executeQuery();
			while(rs.next()) {
				String name = rs.getString("name");
				String sex = rs.getString("sex");
				String specialty = rs.getString("specialty");
				String grade = rs.getString("grade");
				stu = new Student(name, sex, specialty, grade, id);
			}
			HttpSession session = req.getSession();
			session.setAttribute("stu", stu);
			resp.sendRedirect("stuEdit.jsp");
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}

}

DbConnect.java

package db;

import java.sql.Connection;
import java.sql.DriverManager;

public class DbConnect {
	public static Connection con;
	public static Connection getConnection() {
		try {
			//加载数据库驱动
			Class.forName("org.gjt.mm.mysql.Driver").newInstance();
			//数据库的连接地址
			String url = "jdbc:mysql://localhost:3306/StuManage?user=root&password=***"
					+ "&useUnicode=true&characterEncoding=utf-8&userSSL=true";
			//与数据库连接
			con = DriverManager.getConnection(url);
			System.out.println("数据库连接成功");
		}catch (Exception e) {
			e.printStackTrace();
		}
		return con ;
	}
}

Student.java

package bean;

public class Student {
	private String name;
	private String sex; 
	private String specialty;
	private String grade ;
	private int id ; 
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public Student(String name, String sex, String specialty, String grade) {
		this.name = name;
		this.sex = sex;
		this.specialty = specialty;
		this.grade = grade;
	}
	public Student(String name, String sex, String specialty, String grade, int id) {
		this.name = name;
		this.sex = sex;
		this.specialty = specialty;
		this.grade = grade;
		this.id = id;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	public String getSpecialty() {
		return specialty;
	}
	public void setSpecialty(String specialty) {
		this.specialty = specialty;
	}
	
	public String getGrade() {
		return grade;
	}
	public void setGrade(String grade) {
		this.grade = grade;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

able陈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值