一个简单的javaWeb项目(servlet-tomcat)


因为之前学习了servlet与数据库的技术所以就根据学的写一个web项目。虽然servlet是一个将被淘汰的技术,但是对后续框架的学习也有好处。
这个项目就叫做”人员基本信息储存“吧
本次我是用的是 Maven工具,就不需要手动导包了,直接添加依赖就好
注意: 打包类型是 war

   	<dependencies>
		<!-- junit 测试@Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
		
		<!-- lombok -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.10</version>
			<scope>provided</scope>
		</dependency>
		
		<!-- 工具类依赖 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.9</version>
		</dependency>

		<!-- 连接池的依赖 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.21</version>
		</dependency>
		
		<!-- oracle驱动依赖 -->
		<dependency>
			<groupId>com.oracle.ojdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<version>19.3.0.0</version>
		</dependency>

		<!-- 日志依赖 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

		<!-- servlet依赖 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency>
		
		<!-- jsp依赖 -->
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>2.2.1</version>
			<scope>provided</scope>
		</dependency>
		
		<!-- jstl依赖 -->
		<dependency>
			<groupId>Javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	</dependencies>
	<!-- build用来配置编译时的信息 -->
	<build>
		<!-- 配置编译项目时需要的插件 -->
		<plugins>
			<!-- 配置maven编译插件 设置jdk版本为1.8 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

一、需求

  • 在网页上展示所有数据(人员的编号、姓名、年龄和性别)
  • 可以在展示页面上对信息进行删除、修改与添加
  • 删除与修改功能只能由管理员进行操作

二、准备

1、封装数据库链接

package com.briup.util;

import java.sql.Connection;

import com.alibaba.druid.pool.DruidDataSource;

/*
 *这个连接我用的是数据库连接池负责分配、管理和释放数据库连接,
 *它允许应用程序重复使用一个现有的数据库连接
 */

public class OracleConnection {
private static DruidDataSource dataSource;
	
	static {
		dataSource = new DruidDataSource();
		
		dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
		dataSource.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");
		dataSource.setUsername("web");
		dataSource.setPassword("web");
		
		//连接数据库的初始值
		dataSource.setInitialSize(3);
		
		//连接数量的最高上限
		dataSource.setMaxActive(6);
	}
	
	public static Connection getConnection(boolean autoCommit) {
		Connection connection = null;
		try {
			connection = dataSource.getConnection();
			connection.setAutoCommit(autoCommit);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return connection;
		
	}
	public static Connection getConnection() {
		return getConnection(false);
	}
}	

2、数据库建表

我们要向数据库中添加数据,所以就要有一个对应的表格

1.在数据库中编写建表语句
--删除表 确定数据库中没有此命名的表格
drop table t_user;

--创建t_user表
create table t_user(
id number primary key,
name varchar2(20) not null,
age number,
gender varchar2(10)
);

--查询表中的所有数据
select * from t_user;

3、创建一个实例类

1.user的实例类
package com.briup.bean;

public class User {
	private long id;
	private String name;
	private int age;
	private String gender;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(long id, String name, int age, String gender) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + "]";
	}
	
	
}

2.管理员的实例类
package com.briup.bean;
/*
 *因为管理员就一个,所以就不存数据库了
 *直接将数据固定
 *并且在实例类中不提供setting方法与toString方法
 *这样管理员数据就不可以在外部修改与查询
*/
public class Loginer {
	private String name = "jt";
	private String password = "123456";
	public String getName() {
		return name;
	}
	
	public String getPassword() {
		return password;
	}
	
	public Loginer() {
		// TODO Auto-generated constructor stub
	}
	public Loginer(String name, String password) {
		this.name = name;
		this.password = password;
	}
	public Loginer(String name) {
		this.name = name;
	}
	
	
}

三、静态资源

我们要通过浏览器对数据进行操作,所以要有几个对应的静态页面

1、展示数据的页面

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
		+ request.getContextPath() + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>showusers</title>
<style type="text/css">
#msg{
	background: #FFDDCC;

	width: 300px;
	margin-left: 620px;
	margin-top: 150px;
}
#table {
	background: #FFDDCC;

	width:300px;
	margin-left: 620px;
	
}

</style>
</head>
<body>
	<div id="msg">
	<table border="0" align="center">
		<tr>
			<td align="center"><font color="red" face="Verdana" size="+1">
					图书列表&nbsp;&nbsp;${sessionScope.msg}
				<a href="adduser.jsp">添加用户</a>

			</font>
			</td>
			<c:remove var="msg" scope="session" />
		</tr>
	</table>
	</div>


	<div id="table">
		<table border="1">
			<tr>
				<th>编号</th>
				<th>姓名</th>
				<th>年龄</th>
				<th>性别</th>
				<th>操作</th>
			</tr>

			<c:forEach var="user" items="${applicationScope.users}"
				varStatus="status">
				<tr>
					<td>${user.id}</td>
					<td>${user.name}</td>
					<td>${user.age}</td>
					<td>${user.gender}</td>
					<td>
						<button>
							<a href="logined/delete?userid=${user.id}">删除</a>
						</button>
						<button>
							<a href="logined/update?userid=${user.id}&username=${user.name}&userage=${user.age}&usergender=${user.gender}" >编辑</a>
						</button>
					</td>
				</tr>

			</c:forEach>
		</table>
	</div>
</body>
</html>

2、修改数据页面

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
		+ request.getContextPath() + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>updateuser</title>
<style type="text/css">
#msg{
	background: #FFDDCC; 

	width: 194px;
	margin-left: 620px;
	margin-top: 150px;
}
#table {
	background: #FFDDCC;

	width: 194px;
	
	margin-left: 620px;
}
#button{
	width: 170px;
	
	margin-top:10px;
	margin-left: 25px;
}
</style>
</head>
<body>
	<form method="post" action="updatenew">

		<div id="msg">
			<table border="0" align="center">
				<tr>
					<td align="center"><font color="red" face="Verdana" size="+1">
							编辑用户&nbsp;${sessionScope.msg} </font></td>
					<c:remove var="msg" scope="session" />
				</tr>
			</table>
		</div>

		<div id="table">
			<table border="1">

				<tr>
					<td>编号</td>
					<td class="t1"><input type="text" size="20" maxlength="20"
						value="${sessionScope.id}" name="id" /></td>
				</tr>
				<tr>
					<td>姓名</td>
					<td class="t2"><input type="text" size="20" maxlength="20"
						value="${sessionScope.name}" name="name" /></td>
				</tr>
				<tr>
					<td>年龄</td>
					<td class="t3"><input type="text" size="20" maxlength="20"
						value="${sessionScope.age}" name="age" /></td>
				</tr>
				<tr>
					<td>性别</td>
					<td class="t4"><input type="text" size="3" maxlength="10"
						value="${sessionScope.gender}" name="gender" /></td>
				</tr>

			</table>
			<div id="button">
				<input type="submit" value="提交"> 
				<input type="reset" value="重置">
				
			</div>
		</div>
	</form>
</body>
</html>

3、添加数据页面

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
		+ request.getContextPath() + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>adduser</title>
<style type="text/css">
#msg{
	background: #FFDDCC; 

	width: 194px;
	margin-left: 620px;
	margin-top: 150px;
}
#table {
	background: #FFDDCC;

	width: 194px;
	
	margin-left: 620px;
}
#button{
	width: 170px;
	
	margin-top:10px;
	margin-left: 21px;
}
</style>
</head>
<body>
	<form method="post" action="adduser">

		<div id="msg">
			<table border="0" align="center">
				<tr>
					<td align="center"><font color="red" face="Verdana" size="+1">
							添加用户&nbsp;${sessionScope.msg} </font></td>
					<c:remove var="msg" scope="session" />
				</tr>
			</table>
		</div>

		<div id="table">
			<table border="1">
				<tr>
					<td>编号</td>
					<td class="t1"><input type="text" size="20" maxlength="20"
						name="id" /></td>
				</tr>
				<tr>
					<td>姓名</td>
					<td class="t2"><input type="text" size="20" maxlength="20"
						name="name" /></td>
				</tr>
				<tr>
					<td>年龄</td>
					<td class="t3"><input type="text" size="20" maxlength="20"
						name="age" /></td>
				</tr>
				<tr>
					<td>性别</td>
					<td class="t4"><input type="text" size="3" maxlength="10"
						name="gender" /></td>
				</tr>
			</table>
			<div id="button">
				<input type="submit" value="提交">
				<input type="reset" value="重置">
				<button>
					<a href="showusers.jsp">返回</a>
				</button>
			</div>
		</div>
	</form>
</body>
</html>

4、管理员登录页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
  String basePath = request.getScheme() + "://" + request.getServerName() + ":" +
            request.getServerPort() + request.getContextPath() + "/";

%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath %>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>login</title>
<style type="text/css">
#msg {
	background: #FFDDCC;
	width: 250px;
	margin-left: 620px;
	margin-top: 150px;
}

#table {
	background: #FFDDCC;
	width: 250px;
	margin-left: 620px;
}
#button{
	width: 240px;
	margin-left: 70px
}
</style>
</head>
<body>
<body>

	<form action="login">
	
		<div id="msg">
			<table border="0" align="center">
				<tr>
					<td align="center"><font color="red" face="Verdana" size="+1">
							用户登录&nbsp;${sessionScope.msg} </font></td>
					<c:remove var="msg" scope="session" />
				</tr>
			</table>
		</div>

		<div id="table">
			<table border="1"  width="100%">
				<tr>
					<td>用户名</td>
					<td class="t1"><input type="text" size="20" maxlength="20"
						name="username" /></td>
				</tr>
				<tr>
					<td>密码</td>
					<td class="t2"><input type="text" size="10" maxlength="20"
						name="password" /></td>
				</tr>
			</table>
			<div id="button">
				<input type="submit" value="登录">&nbsp;&nbsp; &nbsp;
				<input type="reset"value="重置">
			</div>
		</div>
	</form>
</body>
</html>

注意: 将资源放在Deployed Resource->webapp文件下面,否则页面不会展示在浏览器上

四、web-service-dao

1、web层代码

1.添加数据
package com.briup.web;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
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 com.briup.bean.User;
import com.briup.service.AddUserService;
import com.briup.service.UserService;

@WebServlet("/adduser")
public class AddUser extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//获得页面传过来的数据
		String id = request.getParameter("id");
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		String gender = request.getParameter("gender");
		
		//将数据存到User对象中
		User user = new User();
		user.setId(Long.parseLong(id));
		user.setName(name);
		user.setAge(Integer.parseInt(age));
		user.setGender(gender);
		
		HttpSession session = request.getSession();
		try {
			/*
			 *id为唯一标识
			 *所以id不能重复,在AddUserService类中提供了检查的方法
			*/
			UserService us = new UserService();
			AddUserService aus = new AddUserService();
			/*
			 *如果id重复就抛出异常
			 *否则就添加数据
			*/
			if(aus.findById(id)) {
				aus.saveUser(user);
				
				//数据更新 使展示页面的数据与数据库一致
				ServletContext application = request.getServletContext();
				List<User> users = us.findAll();
				application.setAttribute("users", users);
			}
			
			//添加成功后就跳转到展示页面,并提示
			response.sendRedirect("showusers.jsp");
			session.setAttribute("msg", "操作成功");
		} catch (Exception e) {
			//发生异常后就跳转到本页面,并提示异常信息
			response.sendRedirect("adduser.jsp");
			session.setAttribute("msg", e.getMessage());
		}
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

2、Filer

这里要考虑编码问题

1.编码问题过滤
package com.briup.web.Filer;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebFilter("/*")
public class EncodingFilter implements Filter {
    public EncodingFilter() {
    }

	public void destroy() {
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		chain.doFilter(req, resp);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

2.登录实现

因为删除与修改需要登陆之后操作

package com.briup.web.Filer;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebFilter("/logined/*")
public class LoginFiler implements Filter {

    public LoginFiler() {
        // TODO Auto-generated constructor stub
    }

	public void destroy() {
		// TODO Auto-generated method stub
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
		
		HttpSession session = req.getSession();
		/*
		 *登录标识isLogin
		 *如果页面没有此标识就跳转到登录界面
		*/
		Object obj = session.getAttribute("isLogin");
		if(obj == null) {
			session.setAttribute("msg", "请先登录");
			resp.sendRedirect(req.getContextPath() + "/login.jsp");
			
		} else {
			chain.doFilter(req, resp);
		}
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

3、登录
package com.briup.web;

import java.io.IOException;

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 com.briup.bean.Loginer;
import com.briup.service.LoginService;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String username = request.getParameter("username");
		String passwd = request.getParameter("password");
		
//		System.out.println(username+":"+passwd);
		HttpSession session = request.getSession();
		try {
			//LoginService类中提供了判定方法
			LoginService login = new LoginService();
			Loginer lo = login.login(username, passwd);
			
			session.setAttribute("isLogin", lo);
			response.sendRedirect("showusers.jsp");
		} catch (Exception e) {
			response.sendRedirect("login.jsp");
			session.setAttribute("msg", e.getMessage());
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
4、删除数据
package com.briup.web;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
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 com.briup.bean.User;
import com.briup.service.UserService;

@WebServlet("/logined/delete")
public class DeleteUser extends HttpServlet {
	private static final long serialVersionUID = 1L;
      
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 *<a href="logined/delete?userid=${user.id}">删除</a>
		 *接收页面传过来的id值
		 *通过id删除
		*/
		String userId = request.getParameter("userid");
		UserService us = new UserService();
		us.delById(Long.parseLong(userId));
		
		HttpSession session = request.getSession();
		ServletContext application = request.getServletContext();
		List<User> users = us.findAll();
		application.setAttribute("users", users);
		
		
		
		response.sendRedirect(request.getContextPath() + "/showusers.jsp");
		session.setAttribute("msg", "操作成功");
		
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

5、修改数据
1.数据传输
package com.briup.web;

import java.io.IOException;

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 com.briup.service.UserService;

/*
 *这个传送数据的servlet
*/
@WebServlet("/logined/update")
public class UpdateUser extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 *<a href="logined/update?userid=${user.id}&username=${user.name}&userage=${user.age}&usergender=${user.gender}" >编辑</a>
		 *获取showusers页面中的数据
		*/
		String userId = request.getParameter("userid");
		String userName = request.getParameter("username");
		String userAge= request.getParameter("userage");
		String userGender = request.getParameter("usergender");
		
//		System.out.println(userId+","+userName+","+userAge+","+userGender);
		
		//使在修改页面的初始数据与展示页面的数据相同
		HttpSession session = request.getSession();
		session.setAttribute("id", userId);
		session.setAttribute("name", userName);
		session.setAttribute("age", userAge);
		session.setAttribute("gender", userGender);
		
		//跳转到修改数据页面
		response.sendRedirect(request.getContextPath() + "/updateuser.jsp");
		
		//将数据从数据库删除
		UserService us = new UserService();
		us.delById(Long.parseLong(userId));
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

2.数据修改
package com.briup.web;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
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 com.briup.bean.User;
import com.briup.service.AddUserService;
import com.briup.service.UserService;

/*
 *这是数据修改servlet
*/
@WebServlet("/updatenew")
public class UpdateNewUser extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//获取页面填写的数据
		String id = request.getParameter("id");
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		String gender = request.getParameter("gender");
		
		//将数据存放到user对象中
		User user = new User();
		user.setId(Long.parseLong(id));
		user.setName(name);
		user.setAge(Integer.parseInt(age));
		user.setGender(gender);
		
		HttpSession session = request.getSession();
		try {
			//与adduser相同 这里不写了
			UserService us = new UserService();
			AddUserService aus = new AddUserService();
			if(aus.findById(id)) {
				aus.saveUser(user);

				ServletContext application = request.getServletContext();
				List<User> users = us.findAll();
				application.setAttribute("users", users);
			}
			
			
			response.sendRedirect("showusers.jsp");
			session.setAttribute("msg", "操作成功");
		} catch (Exception e) {
			response.sendRedirect("updateuser.jsp");
			session.setAttribute("msg", e.getMessage());
		}
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

3、service层代码

1、检查添加数据
package com.briup.service;

import com.briup.bean.User;
import com.briup.dao.SyDTest;

public class AddUserService {
	//调用dao层的插入数据的方法
	public void saveUser(User user) throws Exception {
		if(user == null) {
			throw new Exception("参数为空");
		}
		
		SyDTest.insertDate(user);
		
	}
	
	
	//检查id是否已在数据库中存在
	public boolean findById(String id) throws Exception {
		if (id == null) {
			throw new Exception("参数为空");
		}
		
		//调用dao层的查询方法
		for (User user : SyDTest.selectDate()) {
			if (Long.parseLong(id) == user.getId()) {
				throw new Exception("ID已存在");
			}
			
		}
		return true;
	}
}

2、数据查询与删除
package com.briup.service;

import java.util.List;

import com.briup.bean.User;
import com.briup.dao.SyDTest;

public class UserService {
	//查询
	public List<User> findAll(){
		return SyDTest.selectDate();
	}

	//根据ID删除
	public void delById(long id) {
		SyDTest.delDate(id);
	}
}

3、管理员登录处理
package com.briup.service;

import org.apache.commons.lang3.StringUtils;

import com.briup.bean.Loginer;

public class LoginService {
	public Loginer login(String name,String password) throws Exception {
		if(StringUtils.isBlank(name) || StringUtils.isBlank(password)) {
			throw new Exception("参数为空");
		}
	
		//查询是否有此用户名
		Loginer loginer = new Loginer(name);
		if(loginer == null) {
			throw new Exception("用户名或密码错误");
		}
		//查询密码是否与用户名对应
		if(password.equals(loginer.getPassword())) {
			return loginer;
		}
		throw new Exception("用户名或密码错误");
	}
}	

4、Dao层代码(数据库)

package com.briup.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.briup.bean.User;
import com.briup.util.OracleConnection;


public class SyDTest {
	public static void insertDate(User user) {
		try {
			Connection connection = OracleConnection.getConnection();
			
			String sql = "insert into t_user values(?,?,?,?)";
			
			PreparedStatement pre = connection.prepareStatement(sql);
			
			pre.setLong(1, user.getId());
			pre.setString(2, user.getName());
			pre.setInt(3, user.getAge());
			pre.setString(4, user.getGender());
			
			pre.executeUpdate();
			
			connection.commit();
			
			pre.close();
			connection.close();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	
	public static List<User> selectDate() {
		try {
			Connection connection = OracleConnection.getConnection();
			
			List<User> list = new ArrayList<>();
			
			String sql = "select id,name,age,gender "
					+ "from t_user";
			
			PreparedStatement pre = connection.prepareStatement(sql);
			
			ResultSet result = pre.executeQuery();
			
			while(result.next()) {
				User user = new User();
				user.setId(result.getLong("id"));
				user.setName(result.getString("name"));
				user.setAge(result.getInt("age"));
				user.setGender(result.getString("gender"));
				
				list.add(user);
				
			}
			return list;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
		
	}
	public static void delDate(long id) {
		try {
			Connection connection = OracleConnection.getConnection();
			
			String sql = "delete from t_user "
					+ "where id=?";
			PreparedStatement pre = connection.prepareStatement(sql);
			
			pre.setLong(1, id);
			
			pre.executeUpdate();
			
			connection.commit();
			
			pre.close();
			connection.close();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void upDate(int id,String name) {
		try {
			Connection connection = OracleConnection.getConnection();
			
			String sql = "update t_user set name='"+name+"' where id=?";
			
			PreparedStatement pre = connection.prepareStatement(sql);
			
			pre.setLong(1, id);
			
			pre.executeUpdate();
			connection.commit();
			
			pre.close();
			connection.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

5、web层补充

因为考虑到直接在数据库中添加数据,数据有可能展示不到页面上,所以写一个监听

package com.briup.web.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import com.briup.service.UserService;

@WebListener
public class ShowUserListener implements ServletContextListener {

    /**
     * Default constructor. 
     */
    public ShowUserListener() {
        // TODO Auto-generated constructor stub
    }

    public void contextDestroyed(ServletContextEvent sce)  { 
         // TODO Auto-generated method stub
    }

	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent sce)  { 
    	//每次启动服务器(tomcat)就会去数据库拿数据
         UserService users = new UserService();
         ServletContext application = sce.getServletContext();
         application.setAttribute("users", users.findAll());
    }
	
}

五、运行结果

http://127.0.0.1:8989/user-web/showusers.jsp

1、showusers

在这里插入图片描述

2、adduser

在这里插入图片描述
在这里插入图片描述

3、updateuser

1.登录

未登录所以跳转到登录界面
在这里插入图片描述

2.修改

在这里插入图片描述
修改成功
在这里插入图片描述

4、deluser

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值