码迷,mamicode.com
首页 > Web开发 > 详细

jsp安全性问题

时间:2015-08-11 12:22:16      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:servlet   安全   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>
<%  
}
 %>

版权声明:本文为博主原创文章,未经博主允许不得转载。

jsp安全性问题

标签:servlet   安全   jsp   

原文地址:http://blog.csdn.net/ice_alone/article/details/47417011

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!