网学网为广大网友收集整理了,基于JSP+SQL大学学生会工作管理系统,希望对大家有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4系统实现 4.1登陆模块实现 4.1.1功能描述: 图2 登陆界面 登录界面如图2,用户通过学生,教师,管理员3种权限进行登录,系统自动判断用户的身份,验证码是由jsp随机生成,防止恶意破解密码,避免造成数据库压力过大,导致数据库崩溃. 4.1.2代码描述: Ø 判断验证码 获取到随机生成的验证码 String verify1=(String)session.getAttribute("rand"); 用把随机验证码与提交的验证比较,如果不相等,则将返回一个failed if(!verify1.equals(verify)) forward="verifyfailed"; Ø 判断用户名,密码和身份 将用户输入的值传递给静态函数比较,返回不同的值,只有返回2时,登录成功 4个参数分别为数据库连接对象,用户名字符,密码字符,身份字符。同时提交的密码通过调用静态函数进行MD5加密 String PWD=ADDMD5.MD5(password); int result=DBManager.Equals(db, USER, PWD, IDENT); if(result==2)forward="sucesses"; else if(result==1)forward="failed"; else if(result==0)forward="failed"; 图3 权限划分表单 用户登录信息存储在right_ad表中,如图3所示 Ø 将信息存到session中 if(forward.equals("sucesses")){ //如果验证是正确的,则将该用户的信息存到session中 UserInfo user=new UserInfo(); //新建一个userinfo user=user.getUserInfo(USER, IDENT); //将用户信息存储在userinfo里面,然后在返回一个userinfo的对象 session.setAttribute("userinfo",user); //将用户信息保存在session里面 } 用户信息从2个表中取得right_ad(图2)取得权限(right_info),getUserinfo()函数通过身份判断从Admin_info(图4),stu_info(图5)或是tea_info(图6)从获取到用户信息 图4 管理员信息表单 图5 学生信息表单 图6 教师信息表单 返回一个响应 //最后将请求返回一个ActionForward对象交由Servlet,Servlet通过该对象的path属性将请求返回响应 return (mapping.findForward(forward)); 4.2验证码,MD5和连接池简介 4.2.1 验证码的实现: 本次设计使用验证码技术的意义:不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。 验证码生成过程说明: login.jsp主页面通过此语句 <img src="verify.jsp">调用jsp文件,由jsp文件里面的java代码生成该图片,并且将验证码存到session中,以便登录时获取到图片中的验证码 4.2.2 MD5概述: MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。 调用方法: 通过静态函数String AddMd5.md5(String str) 参数str为需要转换的字符 4.2.3数据库连接池概述: 本次设计使用了连接池,在于使用连接池能优化数据库连接。 数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中这项技术能明显提高对数据库操作的性能。 连接池配置代码: 在server.xml中配置以下代码段 <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_MysqlTest_log." suffix=".txt" timestamp="true"/> <Resource name="sqlDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="sqlDB"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>maxActive</name> <value>100</value> </parameter> <parameter> <name>maxIdle</name> <value>30</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value>root</value> </parameter> <parameter> <name>driverClassName</name> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Unversity</value> </parameter> </ResourceParams> 调用方法: 在java文件采用JNDI技术取得数据源从而获得数据库连接 Context ctx=new InitialContext(); //建立一个context对象 通过JNDI获得数据源对象 DataSource ds=(DataSource)ctx.lookup("java:comp/env/sqlDB"); 建立一个数据库连接对象 Connection connection=ds.getConnection();
|
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |