CMS Day2

1.在java下新建package,edu.td.xd
CMS Day2
2.在edu.td.xd下new package.controller,在edu.td.xd.controller下new class
MasterController
CMS Day2
CMS Day2

package edu.td.xd.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value ="master",method = RequestMethod.GET)
public class MasterController {
    @RequestMapping("login")
    public ModelAndView login(){
ModelAndView modelAndView = new ModelAndView();
//指定需要加载的视图
        modelAndView.setViewName("login");
return modelAndView;
    }

    @RequestMapping("index")
    public ModelAndView index(ModelAndView modelAndView){
//指定需要加载的视图
        modelAndView.setViewName("index");
        return modelAndView;
    }
}

3.在webapp下new JSP file, index
CMS Day2
4.配置index
CMS Day2

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
<h1>index 首页</h1>
</body>
</html>

5.单击add configuration,在+里找到Tomcat Server-Local
CMS Day2
6.Depolyment - + - Artifact
CMS Day2
CMS Day2

CMS Day2

7.启动
CMS Day2

8.配置error页面

400页面
CMS Day2

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" pageEncoding="UTF-8" %>
<%@ page import="java.io.PrintWriter" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
    <title>400</title>
</head>
<body>
<h5>网站开小差了,赶快联系NPC</h5>
<ul>
    <li>请求路径:<%=request.getAttribute("javax.servlet.forward.request_uri") %></li>
    <li>错误码:<%=request.getAttribute("javax.servlet.error.status_code") %></li>
    <li>错误信息:<%=exception.getMessage()%></li>
</ul>
<p>
    <% exception.printStackTrace(new PrintWriter(out));%>
</p>
</body>
</html>

404页面
CMS Day2

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" pageEncoding="UTF-8" %>
<%@ page import="java.io.PrintWriter" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>404</title>
</head>
<body>
<h5>网站开小差了,您所查找的页面已经無了</h5>
<ul>
    <li>请求路径:<%=request.getAttribute("javax.servlet.forward.request_uri") %></li>
    <li>错误码:<%=request.getAttribute("javax.servlet.error.status_code") %></li>
    <li>错误信息:<%=exception.getMessage()%></li>
</ul>
<p>
    <% exception.printStackTrace(new PrintWriter(out));%>
</p>
</body>
</html>

500页面
CMS Day2

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" pageEncoding="UTF-8" %>
<%@ page import="java.io.PrintWriter" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>500</title>
</head>
<body>
<h5>网站倒闭了,赶快联系NPC</h5>
<ul>
    <li>请求路径:<%=request.getAttribute("javax.servlet.forward.request_uri") %></li>
    <li>错误码:<%=request.getAttribute("javax.servlet.error.status_code") %></li>
    <li>错误信息:<%=exception.getMessage()%></li>
</ul>
<p>
    <% exception.printStackTrace(new PrintWriter(out));%>
</p>
</body>
</html>

9.把error文件夹移动到WEB-INF中,在WEB-INF下new directory,views,在views下新建jsp :index,login
CMS Day2
index
CMS Day2

login
CMS Day2

10.在spring-mvc中定义前缀后缀,简化
CMS Day2
11.在MasterController中添加lockScreen,views下新建lockScreen.jsp
CMS Day2CMS Day2

12.在edu.td.xd.controller下新建Java Class :MasterApiController
CMS Day2

package edu.td.xd.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping(value = "master",method = RequestMethod.POST)
public class MasterApiController {
    @RequestMapping("loginDeal")
    @ResponseBody//表示直接返回数据给请求对象(浏览器),无需加载指定界面
    public Object loginDeal(){
        return null;
    }
    
    @RequestMapping("unlock")
    @ResponseBody//表示直接返回数据给请求对象(浏览器),无需加载指定界面
    public Object unlock(){
        return null;
    }
}

CMS Day2

13.配置MasterLoginInterceptor
CMS Day2

package edu.td.xd.interceptor;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 拦截器必须实现接口HandlerInterceptor
 * preHandle 进入拦截器后优先执行判断的方法,如果返回值为True,则继续向后执行下一个拦截器或者执行Contrller,如果返回值是False则不再向后执行
 * postHandle postHandle返回值是True且controller没有发生异常时执行的方法
 * afterCompletion postHandle返回值是True且controller执行完成后(无论有无异常情况)执行的方法
 *
 * 登录拦截只需要实现preHandle方法
 */

public class MasterLoginInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
     //判断登录 使用session
        HttpSession session = request.getSession();
        if (session.getAttribute("loginUser") == null){
            //用户未登录-重定向用户到登录页面
            response.sendRedirect("/master/login.do");
            return  false;
        }
        return true;
    }
}

14.在spring-mvc中添加登录验证拦截器
CMS Day2

 <!--登录验证拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/master/login.do"/>
            <mvc:exclude-mapping path="/master/loginDeal.do"/>
            <bean class="edu.td.xd.interceptor.MasterLoginInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

15.webapp下new Directory static
CMS Day2
16.将AdminLTE-3.1.0复制进test-resources
CMS Day2

17.将dist、plugins文件夹复制到static中
CMS Day2

18.把bootstrap中的css文件夹复制到plugins下
CMS Day2

19.配置login.jsp,完成后将target目录下内容全部删除
login.jsp
CMS Day2

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html dir="ltr" lang="zh">
<head>
    <base href="http://localhost/">
    <meta charset="UTF-8">
    <!--浏览器的适配 -->
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA=Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
    <!--禁止百度转码-->
    <meta http-equiv="Cache-Control" content="no-transform">
    <meta http-equiv="Cache-Control" content="no-siteapp">
    <!--站点基础信息-->
    <title>TD-CMS-0103</title>
    <meta name="keywords" content="td,xd,cms,通达学院,教学用">
    <meta name="description" content="通达学院教学用CMS">
    <meta name="author" content="Peanut">
    <meta name="sitename" content="TD-CMS-0103">
    <link rel="icon" type="image/png" href="/static/dist/img/AdminLTELogo.png"> <!--不再使用默认的.icon作为站点图片,而是用png代替-->
 <!--导入css样式表 -->
    <link rel="stylesheet" href="/static/plugins/bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="/static/plugins/fontawesome-free/css/all.css">
    <link rel="stylesheet" href="/static/plugins/toastr/toastr.min.css">
    <link rel="stylesheet" href="/static/plugins/sweetalert2/sweetalert2.min.css">
    <!--导入自定义css样式表 -->
    <link rel="stylesheet" href="/static/css.login.css">
</head>
<body class="bg-gray">

<!--引入js脚本库 -->
<script src="/static/plugins/jquery/jquery.min.js"></script>
<script src="/static/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="/static/plugins/sweetalert2/sweetalert2.min.js"></script>
<script src="/static/plugins/toastr/toastr.min.js"></script>
</body>
</html>

login.css
CMS Day2

html, body{
    width: 100%;
    height: 100vh;
    overflow: hidden;
}
.bg-gray{
     background-color: #5cbfe3;
}

CMS Day2

上一篇:sqlzoo-day2


下一篇:Leetcode刷题——day2