栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet练习——请求头referer

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet练习——请求头referer

请求头referer的作用是记录了上一个请求页面的URL,比如第一次我请求了页面A,当我第二次请求页面B的时候,第二次请求的头信息中referer属性的值就是A页面的URL。

这个有什么用呢?可以做一个简单的登录拦截验证,就是你必须从我指定的页面才能进入首页,从其他的页面进入或者直接通过URL访问都会被拦截。这个后面主要是通过过滤器来实现,主要目的是为了练习一下这个头信息的用法。

servlet代码
@WebServlet("/demo12")
public class ServletDemo12 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String userName = req.getParameter("username");
        String password = req.getParameter("password");

        String url = req.getHeader("referer");
        if(url == null || !url.contains("http://localhost:8080/servlets/login.html")){
            System.out.println("未知位置访问,已跳转到标准登录页面");
            resp.setStatus(302);
            resp.setHeader("location","/servlets/login.html");
        }
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.write("welcome!" + userName);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
登录页面代码(瞎写的)



    
    登录界面
    


    

登录

body{
    background: #acb6e5;  
    background: -webkit-linear-gradient(to right, #86fde8, #acb6e5);  
    background: linear-gradient(to right, #86fde8, #acb6e5); 
}
#heading{
    position: absolute;
    top: 10%;
}
#container{
    text-align: center;
    box-sizing: border-box;
    border-radius: 30px;
    width: 30%;
    height: 60%;
    margin: auto;
    position: absolute;
    top:50%;
    left: 50%;
    transform: translate(-50%,-50%);
    padding: 100px 0;
    background: #E55D87;  
    background: -webkit-linear-gradient(to right, #5FC3E4, #E55D87);  
    background: linear-gradient(to right, #5FC3E4, #E55D87); 

}
.input{
    display: block;
    width: 70%;
    height: 40px;
    background: transparent;
    border: white solid 1px;
    border-radius: 3px;
    margin: auto auto 40px;
}
#container form input:last-child:hover{
    background-color: white;
    opacity: 0.5;
}
.input:focus{
    outline-color: orange;
    outline-width: 1px;
}
测试结果

从login.html页面可以正常访问


从其他页面或者导航栏直接访问servlet12就会重定向到login.html页面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号