目录
运行环境:
1、mysql5.6+
2、tomcat8.0
3、jdk1.8
4、idea、eclipse
系统功能:
1、系统登录
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/base.css" />
<link rel="stylesheet" href="css/login.css" />
<style type="text/css">
a:link {
font-size: 12px;
color: #000000;
text-decoration: none;
}
a:visited {
font-size: 12px;
color: #000000;
text-decoration: none;
}
a:hover {
font-size: 12px;
color: #999999;
text-decoration: none;
}
</style>
<title>网上招聘系统</title>
</head>
<body>
<%
Cookie[] cookies = request.getCookies();
String username = "";
String password = "";
if(cookies!=null){
for(Cookie c:cookies){
if("username".equals(c.getName())){
username = c.getValue();
}
if("password".equals(c.getName())){
password = c.getValue();
}
}
}
%>
<div id="container">
<div id="bd">
<form method="post" action="loginServlet">
<div class="login">
<div class="login-top"><h1 class="logo"></h1></div>
<div class="login-input">
<p class="user ue-clear">
<label>用户名</label>
<input type="text" name="username" value="<%=username %>"/>
</p>
<p class="password ue-clear">
<label>密 码</label>
<input type="password" name="password" value="<%=password %>"/>
</p><br>
<label style="font-size:16px"> 类 型</label>
<input type="radio" value="个人" name="type" checked/><label style="font-size:16px">个人
<input type="radio" value="公司" name="type"/><label style="font-size:16px">公司
</div>
<div class="login-btn ue-clear">
<input type="submit" style="width:117px;height:40px;border-radius:10px;background-color:#2E84CD;color:white" value="登录">
<input type="checkbox" name="rem" id="remember"/>
<label for="remember" style="font-size:15px">记住密码</label>
<a style="font-size:15px;position:relative;left:100px" href="javascript:void(0)" onclick="tiaozhuan()">
<label> 点击注册</label></a>
</div>
</div>
</form>
</div>
</div>
</body>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript">
var height = $(window).height();
$("#container").height(height);
$("#bd").css("padding-top",height/2 - $("#bd").height()/2);
$(window).resize(function(){
var height = $(window).height();
$("#bd").css("padding-top",$(window).height()/2 - $("#bd").height()/2);
$("#container").height(height);
});
$('#remember').focus(function(){
$(this).blur();
});
$('#remember').click(function(e) {
checkRemember($(this));
});
function checkRemember($this){
if(!-[1,]){
if($this.prop("checked")){
$this.parent().addClass('checked');
}else{
$this.parent().removeClass('checked');
}
}
}
function tiaozhuan(){
var type=$("input[name='type']:checked").val();
console.log(type)
if(type=="个人")
location.href="register.html"
else
location.href="c_register.html"
}
</script>
</html>
package tyut.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import tyut.bean.Company;
import tyut.bean.Person;
import tyut.service.imp.ICompanyServiceImp;
import tyut.service.imp.IPersonServiceImp;
/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("rem");
if(remember!=null){
Cookie c1 = new Cookie("username",username);
Cookie c2 = new Cookie("password",password);
c1.setMaxAge(60*60*24*365);
c2.setMaxAge(60*60*24*365);
response.addCookie(c1);
response.addCookie(c2);
}
String type = request.getParameter("type");
HttpSession session = request.getSession();
if("个人".equals(type)){
Person person = new IPersonServiceImp().login(username, password);
if(person == null){
response.sendRedirect("login.jsp");
}else {
session.setAttribute("person",person);
response.sendRedirect("index.jsp");
}
}
if("公司".equals(type)){
Company company = new ICompanyServiceImp().login(username, password);
if(company == null){
response.sendRedirect("login.jsp");
}else {
session.setAttribute("company",company);
response.sendRedirect("c_index.jsp");
}
}
}
}
2、系统注册
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/base.css" />
<link rel="stylesheet" href="css/info-reg.css" />
<title>网上招聘系统</title>
<style type="text/css">
.error{
color:Red;
font-size:13px;
margin-left:5px;
padding-left:16px;
}
</style>
</head>
<body>
<div class="title">
<h2>企业信息注册(*为必填项)</h2>
</div>
<form id="fm">
<div class="main">
<p class="short-input ue-clear">
<label>*用户名:</label>
<input name="username" type="text"/><span id="validate"></span>
</p>
<p class="short-input ue-clear">
<label>*密码:</label>
<input name="password" type="password" style="width:258px;height:27px;border:1px solid #C5D6E0"/>
</p>
<p class="short-input ue-clear">
<label>*公司名称:</label>
<input name="name" type="text"/>
</p>
<p class="long-input ue-clear">
<label>*公司地址:</label>
<input name="location" type="text"/>
</p>
<p class="long-input ue-clear">
<label>*联系方式:</label>
<input name="phone" type="text"/>
</p>
<p class="long-input ue-clear">
<label>电子邮箱:</label>
<input name="email" type="text"/>
</p>
<div class="short-input select ue-clear">
<label>职位需求:</label>
<select name="trade" style="width:200px;height:30px;border:1px solid #C5D6E0">
<option>软件工程师</option>
<option>会计</option>
<option>文员</option>
<option>客户经理</option>
<option>网站策划</option>
<option>平面设计师</option>
</select>
</div>
<div class="short-input select ue-clear">
<label>薪资待遇:</label>
<select name="salary"style="width:200px;height:30px;border:1px solid #C5D6E0">
<option>3000-4000</option>
<option>4001-5000</option>
<option>5001-6000</option>
<option>6001-7000</option>
<option>7001-8000</option>
</select>
</div>
<p class="short-input ue-clear">
<label>企业简介:</label>
<textarea name="tip" placeholder="请输入内容"></textarea>
</p>
<label> 是否想要现在发布招聘信息:</label>
<input type="checkbox" name="isAuto" checked>
<div class="btn ue-clear">
<input style="height:50px;width:150px;background-color:#68B86C;color:white;border-radius:10px" type="submit" value="提交"/>
<input style="height:50px;width:150px;background-color:#EFF6FA;color:black;border-radius:5px" type="reset" value="清空"/>
</div>
</div>
</form>
</body>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="js/WdatePicker.js"></script>
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<script type="text/javascript">
showRemind('input[type=text], textarea','placeholder');
$( "#fm" ).validate({
rules: {
username: {
required: true,
minlength: 4,
maxlength: 10
},
password: {
required:true
},
name: {
required:true
},
location: {
required:true
},
phone: {
required:true
}
},
messages: {
username: {
required: "*不能为空!",
maxlength: $.validator.format( "长度不得大于10个字符!" ),
minlength: $.validator.format( "长度不得小于4个字符!" )
},
password: {
required: "*不能为空!"
},
name: {
required: "*不能为空!"
},
location: {
required: "*不能为空!"
},
phone: {
required:"*不能为空!"
}
},
submitHandler: function(form) {
validate(); //用自定义函数提交表单
}
});
//ajax验证用户名成功后,再进行注册
function validate(){
$.ajax({
url:"../registerServlet",
type:"post",
dataType:"text",
data:$("#fm").serialize(),
success:function(data){
console.log(data);
if(data=='该用户名已存在!'){
$("#validate").html(data);
}else{
alert("注册成功!");
window.open ('/login.jsp','_top');
}
}
});
}
</script>
</html>
package tyut.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import tyut.bean.Company;
import tyut.bean.Person;
import tyut.service.imp.ICompanyServiceImp;
import tyut.service.imp.IPersonServiceImp;
/**
* Servlet implementation class PersonRegisterServlet
*/
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RegisterServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String trade = request.getParameter("trade");
String salary = request.getParameter("salary");
String tip = request.getParameter("tip");
String sex = request.getParameter("sex");
String isAuto = request.getParameter("isAuto");
boolean bool = false;
PrintWriter out = response.getWriter();
//个人注册
if(sex!=null){
String birthday = request.getParameter("birthday");
String school = request.getParameter("school");
Person person = new Person(username, password, name, sex, birthday, phone, email, school, trade, salary, tip);
IPersonServiceImp iPersonServiceImp = new IPersonServiceImp();
bool = iPersonServiceImp.register(person);
if(bool == false){
//ajax向前台传值
out.write("该用户名已存在!");
//注册成功
}else{
//注册完立即发布简历
if(isAuto!=null){
person.setPubtime(new Date());
iPersonServiceImp.publish(person);
}
}
}
//公司注册
else{
String location = request.getParameter("location");
Company company = new Company(username, password, name, phone, email, location, trade, salary, tip);
ICompanyServiceImp iCompanyServiceImp = new ICompanyServiceImp();
bool = iCompanyServiceImp.register(company);
if(bool == false){
out.write("该用户名已存在!");
//注册成功
}else{
//注册完立即发布简历
if(isAuto!=null){
company.setPubtime(new Date());
iCompanyServiceImp.publish(company);
}
}
}
out.flush();
out.close();
}
}
3、人才信息库
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,tyut.bean.*,tyut.service.imp.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/base.css" />
<link rel="stylesheet" href="css/info-mgt.css" />
<link rel="stylesheet" href="css/WdatePicker.css" />
<title>网上招聘系统</title>
<style type="text/css">
a:link {
font-size: 12px;
color: #000000;
text-decoration: none;
}
a:visited {
font-size: 12px;
color: #000000;
text-decoration: none;
}
a:hover {
font-size: 12px;
color: #999999;
text-decoration: none;
}
</style>
</head>
<body>
<%
if(request.getParameter("source")==null){
List<Person> persons = new IPersonServiceImp().listAllPersons();
application.setAttribute("persons", persons);
}
%>
<div class="title"><h2>人才库信息</h2></div>
<div class="query">
<form method="post" action="listServlet">
<div class="query-conditions ue-clear">
<div class="conditions name ue-clear">
<label>专业:</label>
<select name="trade" style="width:200px;height:28px;border:1px solid #C5D6E0">
<option value="">不限</option>
<option>软件工程</option>
<option>经济管理</option>
<option>数学</option>
<option>土木工程</option>
<option>法学</option>
</select>
</div>
<div class="conditions operate-time ue-clear">
<label>薪资范围:</label>
<div class="select-wrap">
<select name="salary" style="width:200px;height:28px;border:1px solid #C5D6E0">
<option value="">不限</option>
<option >3000-4000</option>
<option >4001-5000</option>
<option >5001-6000</option>
<option >6001-7000</option>
<option >7001-8000</option>
</select>
</div>
</div>
<div class="conditions time ue-clear">
<label>截止时间:</label>
<div class="time-select">
<input name="pubtime" type="text" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})"/>
<i class="icon"></i>
</div>
</div>
<div class="conditions name ue-clear">
<label>学校:</label>
<input style="width:195px;height:25px;border:1px solid #C5D6E0" name="school" type="text">
</div>
<input name="type" type="hidden" value="公司">
</div>
<div class="query-btn ue-clear">
<input style="background-color:#68B86C;color:white;border-radius:10px" type="submit" value="查询"/>
<input style="background-color:#EFF6FA;color:black;border-radius:10px" type="reset" value="清空"/>
</div>
</form>
</div>
<div class="table-box">
<table>
<thead>
<tr>
<th class="num">序号</th>
<th class="name">姓名</th>
<th class="node">专业</th>
<th class="node">毕业学校</th>
<th class="node">薪资要求</th>
<th class="node">联系方式</th>
<th class="node">操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${persons }" var ="person" begin="0" varStatus="status">
<tr>
<td class="num">${status.count }</td>
<td class="name">${person.name}</td>
<td class="node">${person.trade}</td>
<td class="node"> ${person.school}</td>
<td class="node">${person.salary}</td>
<td class="node">${person.phone}</td>
<td class="node"><a style="color:blue" href="c_info.jsp?id=${person.id }" target="_blank">详细信息</a></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="pagination ue-clear"></div>
</body>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="js/WdatePicker.js"></script>
<!-- <script type="text/javascript" src="js/jquery.pagination.js"></script>-->
<!--<script type="text/javascript">
$('.pagination').pagination(100,{
callback: function(page){
},
display_msg: true,
setPageNo: true
});-->
<script type="text/javascript">
$("tbody").find("tr:odd").css("backgroundColor","#eff6fa");
showRemind('input[type=text], textarea','placeholder');
</script>
</html>
package tyut.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import tyut.bean.Company;
import tyut.bean.Person;
import tyut.service.imp.ICompanyServiceImp;
import tyut.service.imp.IPersonServiceImp;
/**
* Servlet implementation class ListSerlvet
*/
public class ListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ListServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String type = request.getParameter("type");
Map<String, String> map = new HashMap<String, String>();
ServletContext servletContext = request.getServletContext();
Enumeration<String> paramNames = request.getParameterNames();
// 通过循环将表单参数放入键值对映射中
while(paramNames.hasMoreElements()) {
String key = paramNames.nextElement();
String value = request.getParameter(key);
if(!"".equals(value)){
map.put(key, value);
}
}
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<script>");
if("个人".equals(type)){
List<Company> companies = new ICompanyServiceImp().listAllCompaniesByParams(map);
servletContext.setAttribute("companies", companies);
out.println("window.open ('"+request.getContextPath()+"/index.jsp?source=listServlet','_top')");
}
if("公司".equals(type)){
List<Person> persons = new IPersonServiceImp().listAllPersonsByParams(map);
servletContext.setAttribute("persons", persons);
out.println("window.open ('"+request.getContextPath()+"/c_index.jsp?source=listServlet','_top')");
}
out.println("</script>");
out.println("</html>");
out.flush();
out.close();
}
}
4、职位搜索
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,tyut.bean.*,tyut.service.imp.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/base.css" />
<link rel="stylesheet" href="css/info-mgt.css" />
<link rel="stylesheet" href="css/WdatePicker.css" />
<title>网上招聘系统</title>
<style type="text/css">
a:link {
font-size: 12px;
color: #000000;
text-decoration: none;
}
a:visited {
font-size: 12px;
color: #000000;
text-decoration: none;
}
a:hover {
font-size: 12px;
color: #999999;
text-decoration: none;
}
</style>
</head>
<body>
<% //第一次进query.jsp页面,显示所有公司的招聘信息
if(request.getParameter("source")==null)
{
List<Company> companies = new ICompanyServiceImp().listAllCompanies();
application.setAttribute("companies", companies);
}
%>
<div class="title"><h2>职位搜索</h2></div>
<div class="query">
<form method="post" action="listServlet">
<div class="query-conditions ue-clear">
<div class="conditions name ue-clear">
<label>职位类别:</label>
<select name="trade" style="width:200px;height:28px;border:1px solid #C5D6E0">
<option value="">不限</option>
<option>软件工程师</option>
<option>会计</option>
<option>文员</option>
<option>客户经理</option>
<option>网站策划</option>
<option>平面设计师</option>
</select>
</div>
<div class="conditions operate-time ue-clear">
<label>薪资范围:</label>
<div class="select-wrap">
<select name="salary" style="width:200px;height:28px;border:1px solid #C5D6E0">
<option value="">不限</option>
<option >3000-4000</option>
<option >4001-5000</option>
<option >5001-6000</option>
<option >6001-7000</option>
<option >7001-8000</option>
</select>
</div>
</div>
<div class="conditions time ue-clear">
<label>截止时间:</label>
<div class="time-select">
<input name="pubtime" type="text" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})"/>
<i class="icon"></i>
</div>
</div>
<!--注意!传递type参数 -->
<input name="type" type="hidden" value="个人">
</div>
<div class="query-btn ue-clear">
<input style="background-color:#68B86C;color:white;border-radius:10px" type="submit" value="查询"/>
<input style="background-color:#EFF6FA;color:black;border-radius:10px" type="reset" value="清空"/>
</div>
</form>
</div>
<div class="table-box">
<table>
<thead>
<tr>
<th class="num">序号</th>
<th class="name">公司名称</th>
<th class="process">职位需求</th>
<th class="node">薪资</th>
<th class="node">联系方式</th>
<th class="node">操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${companies }" var ="company" begin="0" varStatus="status">
<tr>
<td class="num">${status.count }</td>
<td class="name">${company.name}</td>
<td class="node">${company.trade}</td>
<td class="node">${company.salary}</td>
<td class="node">${company.phone}</td>
<td class="node">
<a style="color:blue" href="info.jsp?id=${company.id }" target="_blank">详细信息</a>
<a style="color:red" href="applyServlet?p_id=${person.id}&c_id=${company.id }">我要申请</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="pagination ue-clear"></div>
</body>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="js/WdatePicker.js"></script>
<!-- <script type="text/javascript" src="js/jquery.pagination.js"></script>-->
<!--<script type="text/javascript">
$('.pagination').pagination(100,{
callback: function(page){
},
display_msg: true,
setPageNo: true
});
</script>-->
<script type="text/javascript">
$("tbody").find("tr:odd").css("backgroundColor","#eff6fa");
showRemind('input[type=text], textarea','placeholder');
</script>
</html>
package tyut.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import tyut.bean.Company;
import tyut.bean.Person;
import tyut.service.imp.ICompanyServiceImp;
import tyut.service.imp.IPersonServiceImp;
/**
* Servlet implementation class ListSerlvet
*/
public class ListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ListServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String type = request.getParameter("type");
Map<String, String> map = new HashMap<String, String>();
ServletContext servletContext = request.getServletContext();
Enumeration<String> paramNames = request.getParameterNames();
// 通过循环将表单参数放入键值对映射中
while(paramNames.hasMoreElements()) {
String key = paramNames.nextElement();
String value = request.getParameter(key);
if(!"".equals(value)){
map.put(key, value);
}
}
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<script>");
if("个人".equals(type)){
List<Company> companies = new ICompanyServiceImp().listAllCompaniesByParams(map);
servletContext.setAttribute("companies", companies);
out.println("window.open ('"+request.getContextPath()+"/index.jsp?source=listServlet','_top')");
}
if("公司".equals(type)){
List<Person> persons = new IPersonServiceImp().listAllPersonsByParams(map);
servletContext.setAttribute("persons", persons);
out.println("window.open ('"+request.getContextPath()+"/c_index.jsp?source=listServlet','_top')");
}
out.println("</script>");
out.println("</html>");
out.flush();
out.close();
}
}