🍊作者:计算机编程-吉哥
🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
🍊心愿:点赞 👍 收藏 ⭐评论 📝
🍅 文末获取源码联系
springboot、mybatis、jsp、jquery、html、css、mysql、tomcat8.5、jdk1.8
17张
idea或者eclipse、navicat
【前端功能】:
注册、登录、岗位选择、岗位报名、在线评测、个人中心、简历上传
【后端功能】:
登录、首页、岗位报名管理、岗位类别管理、岗位管理、用户管理、部门管理、面试进度与结果管理、招聘笔试管理、在线评测类别管理、在线评测管理
1、首页
2、注册
3、登录
4、选择岗位
5、岗位详情
6、岗位报名、收藏
7、在线评测管理
8、简历管理
9、岗位收藏
10、报名进度
11、岗位报名管理
12、查看报名者简历
13、岗位类别管理
14、岗位管理
15、用户管理
16、部门管理
17、面试进度、结果管理
18、招聘笔试管理
19、在线评测问题管理
【login.jsp】
- <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
- <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
- <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- <c:set var="contextPath" value="<%=request.getContextPath()%>">c:set>
- html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>招聘报名管理平台title>
- <link rel="stylesheet" href="${contextPath}/static/css/login.css" />
- <link rel="stylesheet" href="${contextPath}/static/css/bootstrap.css">
- <script type="text/javascript" src="${contextPath}/static/js/jquery-1.11.3.js" >script>
- <script type="text/javascript" src="${contextPath}/static/js/bootstrap.min.js" >script>
- <script type="text/javascript" src="${contextPath}/static/js/jquery.validate.js">script>
- <script type="text/javascript" src="${contextPath}/static/js/localization/messages_zh.js">script>
- <script type="text/javascript" src="${contextPath}/static/js/sweetAlert.js">script>
- <script type="text/javascript" src="${contextPath}/static/js/main.js">script>
- head>
- <body>
-
-
- <nav class="navbar navbar-default">
-
- nav>
- <div id="login">
- <p>登录p>
- div>
- <div id="container">
-
- <ul class="nav nav-tabs" role="tablist">
- <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">登录a>li>
- <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">验证密保a>li>
- <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">重置密码a>li>
- ul>
-
-
- <div class="tab-content">
- <div role="tabpanel" class="tab-pane active" id="home">
- <form method="post" action="/loginCheck">
- <div class="form-group">
- <label for="username">用户名:label>
- <input type="text" class="form-control" name="username" placeholder="输入你的帐号" required="required">
- div>
- <div class="form-group">
- <label for="exampleInputPassword1">密码:label>
- <input type="password" class="form-control" name="password" placeholder="输入密码" required="required">
- div>
-
- <c:if test="${flag eq'failed'}">
- <p style="color: red"><c:out value="用户名或密码错误">c:out>p>
- c:if>
-
- <div class="row">
- <div class="col-xs-6 pull_left">
- <div class="form-group">
- <input class="form-control" type="tel" id="verify_input" name="verifyInput" placeholder="请输入验证码"
- maxlength="4">
- div>
- div>
- <div class="col-xs-6 pull_left">
- <a href="javascript:void(0);" title="点击更换验证码">
- <img id="imgVerify" src="login/getVerify" alt="更换验证码" height="36" width="140"
- onclick="getVerify(this);">
- a>
- div>
- div>
- <c:if test="${verifyCode eq'false'}">
- <p style="color: red"><c:out value="验证码错误">c:out>p>
- <script>
- getVerify();
- script>
- c:if>
- <div class="checkbox">
- <label>
- <input type="checkbox" name="rememberMe"> 记住我
- label>
- div>
- <button type="submit" class="btn btn-primary" style="width: 170px;">登录button>
- form>
-
- div>
- <div role="tabpanel" class="tab-pane" id="profile">
- <p>请输入帐号和回答两个密保问题:p>
- <form id="profile1">
- <div class="form-group">
- <label for="username">请输入你的帐号:label>
- <input type="text" class="form-control" id="username" name="username" placeholder="张三" required="required">
- div>
- <div class="form-group">
- <label for="answer1">你的母亲的名字是?label>
- <input type="text" class="form-control" id="answer1" placeholder="张三" required="required">
- div>
- <div class="form-group">
- <label for="exampleInputPassword1">你的电话号码是?label>
- <input type="text" class="form-control" id="answer2" placeholder="1234567" required="required">
- div>
-
- <input type="submit" class="btn btn-primary" value="提交" style="width: 170px;"/>
- form>
- div>
- <div role="tabpanel" class="tab-pane" id="messages">
- <form id="messages1">
- <div class="form-group">
- <label for="password1">新密码label>
- <input type="password" class="form-control" id="password1" name="password1" placeholder="输入你的密码" required="required">
- div>
- <div class="form-group">
- <label for="Password2">再输入一次密码:label>
- <input type="password" class="form-control" id="password2" name="password2" placeholder="再输入一次密码" required="required">
- div>
- <button type="submit" class="btn btn-primary" style="width: 170px;">提交button>
- form>
- div>
- div>
-
- div>
-
-
- <div id="register">
- <label>欢迎使用招聘报名管理平台label>
- <p>您可以免费注册一个帐号,以获取更多的便利p>
- <a href="/register" class="btn btn-success">注册a>
- div>
-
- <script type="text/javascript">
- $('#myTabs a').click(function (e) {
- e.preventDefault();
- $(this).tab('show')
- })
- function getVerify() {
- $("#imgVerify").attr("src", 'login/getVerify?' + Math.random());//jquery方式
- }
-
- function aVerify(){
- var value =$("#verify_input").val();
- // alert(value);
- $.ajax({
- async: false,
- type: 'post',
- url: 'login/checkVerify',
- dataType: "json",
- data: {
- verifyInput: value
- },
- success: function (result) {
- if (result) {
- alert("success!");
- } else {
- alert("failed!");
- }
- getVerify();
- }
- });
- }
- script>
- body>
- html>
【MainController】
- @PostMapping("/loginCheck")
- public String loginCheck(String username, String password, HttpSession session, Model model,String verifyInput){
-
- //检验验证码
- String originalVerify = (String)session.getAttribute(RandomValidateCodeUtil.RANDOMCODEKEY);
- if(!StringUtils.equals(originalVerify,verifyInput)){
- model.addAttribute("verifyCode","false");
- return "login";
- }
-
- UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username,password);
- usernamePasswordToken.setRememberMe(true);
-
- Subject subject = SecurityUtils.getSubject();
-
- try {
- subject.login(usernamePasswordToken);
- session.setAttribute("username",(String)subject.getPrincipal());
- model.addAttribute("username",(String)subject.getPrincipal());
- return "index";
- }catch (Exception e){
- model.addAttribute("flag","failed");
- return "login";
- }
- }
【shiroConfig】
- package cn.eric.config;
-
- import java.util.LinkedHashMap;
-
- @Configuration
- public class ShiroConfig {
- @Bean
- public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
- ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
- shiroFilterFactoryBean.setSecurityManager(securityManager);
- shiroFilterFactoryBean.setLoginUrl("/login1");
- shiroFilterFactoryBean.setSuccessUrl("/index1");
- shiroFilterFactoryBean.setUnauthorizedUrl("/error1");
- LinkedHashMap
map = new LinkedHashMap<>(); - map.put("/static/**", "anon");
- map.put("/login/getVerify", "anon");
- map.put("/login1", "anon");
- map.put("/","anon");
- map.put("/loginCheck", "anon");
- map.put("/register", "anon");
- map.put("/registerCheck", "anon");
- map.put("/checkAnswer", "anon");
- map.put("/changePassword", "anon");
- map.put("/position/**", "anon");
- map.put("/school/**", "anon");
- map.put("/index1/**", "anon");
- map.put("/admin/**", "authc");
- map.put("/**", "user");
- shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
- return shiroFilterFactoryBean;
- }
-
- @Bean(name = "securityManager")
- public SecurityManager securityManager(AuthRealm authRealm,CookieRememberMeManager cookieRememberMeManager) {
- DefaultSecurityManager defaultSecurityManager = new DefaultWebSecurityManager();
- defaultSecurityManager.setRealm(authRealm);
- defaultSecurityManager.setRememberMeManager(cookieRememberMeManager);
- return defaultSecurityManager;
- }
-
- @Bean(name = "authRealm")
- public AuthRealm authRealm(CredentialMatcher credentialMatcher) {
- AuthRealm authRealm = new AuthRealm();
- authRealm.setCacheManager(new MemoryConstrainedCacheManager());
- authRealm.setCredentialsMatcher(credentialMatcher);
- return authRealm;
- }
-
- @Bean(name = "credentialsMatcher")
- public CredentialMatcher credentialsMatcher() {
- return new CredentialMatcher();
- }
-
-
- @Bean
- public AuthorizationAttributeSourceAdvisor
- authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
- AuthorizationAttributeSourceAdvisor sourceAdvisor = new AuthorizationAttributeSourceAdvisor();
- sourceAdvisor.setSecurityManager(securityManager);
- return sourceAdvisor;
- }
-
- @Bean
- public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
- DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();
- creator.setProxyTargetClass(true);
- return creator;
- }
-
- @Bean(name = "simpleCookie")
- public SimpleCookie simpleCookie() {
- SimpleCookie simpleCookie = new SimpleCookie();
- simpleCookie.setHttpOnly(true);
- simpleCookie.setName("helloWorld");
- simpleCookie.setMaxAge(2592000); //最多30天
- return simpleCookie;
- }
-
- @Bean(name = "cookieRememberMeManager")
- public CookieRememberMeManager cookieRememberMeManager(SimpleCookie simpleCookie){
- CookieRememberMeManager manager = new CookieRememberMeManager();
- manager.setCookie(simpleCookie);
- manager.setCipherKey(Base64.decode("4AvVhmFLUs0KTA3Kprsdag=="));
- return manager;
- }
-
- @Bean
- public FormAuthenticationFilter formAuthenticationFilter(){
- FormAuthenticationFilter formAuthenticationFilter = new FormAuthenticationFilter();
- formAuthenticationFilter.setRememberMeParam("rememberMe");
- return formAuthenticationFilter;
- }
-
- }
【AuthRealm】
- public class AuthRealm extends AuthorizingRealm {
-
- @Autowired
- private UserService userService;
- @Autowired
- private RoleServiceImpl roleService;
-
- public String getName(){
- return this.getClass().getName(); // 返回类名
- }
- /**
- * 授权
- * @param principalCollection
- * @return
- */
- @Override
- protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
- String userName = (String) principalCollection.fromRealm(this.getName()).iterator().next();
- User user = userService.findByUsername(userName);
- List
roleList = Lists.newArrayList(); - Role roles = roleService.getRoles(user.getRoleId());
- if (roles == null){
- return null;
- }
- roleList.add(roles.getRoleName());
- SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
- info.addRoles(roleList);
- return info;
- }
-
- /**
- * 验证
- */
- @Override
- protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
-
- UsernamePasswordToken token = (UsernamePasswordToken)authenticationToken;
- String username = token.getUsername();
- User user = userService.findByUsername(username);
- System.out.println(user);
- return new SimpleAuthenticationInfo(username,user.getPassword(),getName());
- }
- }
更多项目推荐:计算机毕业设计项目
公众号:IT跃迁谷【更多精彩文章】
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓如果大家有任何疑虑,请在下方位置详细咨询。