zoukankan      html  css  js  c++  java
  • jsp安全性问题

    jsp项目不同jsp之间假设只通过超链接进行跳转,安全性太低,不能满足现实生活中对安全性的要求!
    为了提高安全性。能够通过Servlet进行跳转,进行跳转的时候为了进一步实现其安全性,能够通过间jsp文件放在WEB-INF目录里面。这样安全性就能得到提升。可是问题伴随而来,放在WEB-INF目录里面,怎样进行訪问?
    能够实现的一种思路:另建一个Servlet类作为页面跳转的中转站!将须要使用到的放在WEB-INF目录里面的文件通过使用id进行区分,在须要訪问到这些jsp文件的时候直接通过中转站然后获得要訪问的jsp的id,即能够进行对应的页面跳转。

    新建的Servlet类代码例如以下:

    package cn.edu.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MNG extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            String id = request.getParameter("id");
            //从页面获得的用户区分跳转页面的id
            System.out.println("id="+id);
            //我调试的时候使用的,并没实用
            if(id.equals("1")){
                 request.getRequestDispatcher("/index.jsp").forward(request,response);
            }else if(id.equals("2")){
                request.getRequestDispatcher("/WEB-INF/admin/add.jsp").forward(request,response);
            }else if (id.equals("3")) {
                request.getRequestDispatcher("/WEB-INF/admin/bisai.jsp").forward(request,response);
            }else if (id.equals("4")) {
                request.getRequestDispatcher("/WEB-INF/admin/gamema.jsp").forward(request,response);
            }else if (id.equals("5")) {
                request.getRequestDispatcher("/WEB-INF/admin/manager.jsp").forward(request,response); 
            }else if (id.equals("6")) {
                request.getRequestDispatcher("/WEB-INF/admin/message.jsp").forward(request,response);
            }else if (id.equals("7")) {
                request.getRequestDispatcher("/WEB-INF/admin/modify.jsp").forward(request,response); 
            }else if (id.equals("8")) {
                request.getRequestDispatcher("/WEB-INF/admin/pk.jsp").forward(request,response);
            }else if (id.equals("9")) {
                request.getRequestDispatcher("/WEB-INF/admin/result.jsp").forward(request,response); 
            }
        }
    }

    进行跳转的页面代码例如以下:

    <form action="AddServlet" method="post">
                <label>比赛编号:</label><input type="text" name="id" placeholder="请输入比赛编号"/><br />
                <label>比赛名称:</label><input type="text" name="gamename" placeholder="请输入比赛名称"/><br />
                <label>比赛时间:</label><input type="text" name="gametime" placeholder="*格式:YYYY.MM.DD"/><br />
                <label>比赛地点:</label><input type="text" name="gameaddress" placeholder="请输入比赛地点"/><br />
                <label>人数限制:</label><input type="text" name="gamenum" placeholder="*格式:请填写整数"/><br />
                <label>报名截止:</label><input type="text" name="deadline" placeholder="*格式:YYYY.MM.DD"/><br />
                <!-- 
                <form action="" method="post"><input type="submit" value="加入"></form>
                <form action="tennis_game/WebRoot/WEB-INF/bisai.jsp" method="post"><input type="button" value="返回"></form>
                 -->
                <button type="submit" value="加入">加入</button>
                <a href="MNG?id=3"><button type="button" value="返回">返回</button></a>
            </form>

    通过id进行跳转。
    还有一种方法比較简单,不用讲所有的jsp文件所有都放在WEB-INF文件以下。只通过将登陆页面要跳转的目标页面放入WEB-INF文件下即可了,通过登陆页面跳转的 Servlet类中通过会话对象session获取用户的账户密码,然后在每个页面的開始通过JavaScript来验证是否登陆。

    function checkNull(){
        if(document.getElementById("id").value=="" || document.getElementById("id").value==null)
            {
                alert("帐号不能为空!");
                document.getElementById("id").focus();
                document.getElementById("id").select();
                return false;
            }
            if(document.getElementById("pass").value=="" || document.getElementById("pass").value==null)
            {
                alert("密码不能为空!

    "); document.getElementById("pass").focus(); document.getElementById("pass").select(); return false; } if(document.getElementById("password").value!=document.getElementById("password2").value) { alert("两次密码输入不一致!"); document.getElementById("password").focus(); document.getElementById("password").select(); return false; } if(document.getElementById("name").value=="" || document.getElementById("name").value==null) { alert("姓名不能为空!"); document.getElementById("name").focus(); document.getElementById("name").select(); return false; } else return true; } 管理员登录界面确保安全性: <% String adminid = (String)session.getAttribute("adminname"); if(adminid==null){ %> <script type="text/javascript" language="javascript"> alert("你还没有登录。。。"); window.document.location.href="/TennisMatch/welcome"; </script> <% } %>

  • 相关阅读:
    一个用css写出来的下拉菜单
    oracle创建新的用户 创建序列 并生成自动自增
    Ubuntu 16.04下安装网络流量分析工具 Wireshark
    Ubuntu16.04安装PostgreSQL并使用pgadmin3管理数据库_图文详解
    http协议无状态中的 "状态" 到底指的是什么?!
    Struts2使用流程
    hibernate创建一对多映射关系
    hibernate中创建一对一映射关系
    利用Hibernate进行数据库的增删改查
    Hibernate的简单流程
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7236189.html
Copyright © 2011-2022 走看看