基于jsp的作业批改系统
content fujian fujianyuanshiming shijian varchar varchar varchar varchar 50 50 50 50 否 否 否 否 否 否 否 否 资料内容 附件路径 附件原始名 发布时间 (7)公告信息表主要是记录了公告的基本信息,表结构如图3.7所示。
表3.7公告信息表(t_gonggao)
列名 id title content shijian 数据类型 int varchar varchar varchar 长度 允许空 是否主键 4 否 是 50 否 否 5000 否 否 50 否 否 说明 编号 标题 内容 发布时间 (8)留言信息表主要是记录了留言的基本信息,表结构如图3.8所示。
表3.8留言信息表(t_liuyan)
列名 id title content shijian user_id 3.9所示。
表3.9管理员信息表(t_admin)
列名 userId userName userPw 数据类型 int varchar varchar 长度 允许空 是否主键 4 否 是 50 否 否 50 否 否 说明 编号 用户名 密码 数据类型 int varchar varchar varchar Varchar 长度 允许空 是否主键 4 否 是 50 否 否 5000 否 否 50 否 否 50 否 否 说明 编号 标题 内容 发布时间 发布人 (9)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表
3.1.3数据库的连接原理
采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。其思想如图
基于jsp的作业批改系统
3.10所示:
BusinessObject 使用 DataAccessObject 封装 DataSource 获取/修改 DataTransferObject
图3.10 DAO模式类图
创建/使用 图中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数据传输对象,在应用程序不同层次之间传输对象,在一个分布式应用程序中,通常可以提高整理的性能;DataObjectAcces数据输入/输出对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据罗即将,是的编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下:
public DBContent(){
String CLASSFORNAME=\; String url=\; String user=\;//连接数据库的用户名 String password=\;//连接数据库的密码 try{
Class.forName(CLASSFORNAME);
con= DriverManager.getConnection(url,user,password);//加载数据库的驱动
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCU } }
}
ex.printStackTrace();
R_UPDATABLE);
catch(Exception ex){
在程序需要连接数据库的地方,只需要生成一个DBConnet的对象,就可以对数据库进行连接并操作。
3.2中文乱码问题处理
在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器
基于jsp的作业批改系统
SetCharacterEncodingFilter。
在web.xml中配置:
对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义:
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter(\); String value = filterConfig.getInitParameter(\); }
在工具包util包中同样定义了DataFormate类来处理字符转换:
public static String toUni(String gbStr){ String uniStr = \; /*把字符串转换成uincode编码*/ if(gbStr == null){ gbStr = \; } try{
byte[] tempByte = gbStr.getBytes(\); uniStr = new String(tempByte,\); }catch(Exception ex){ }
return uniStr; }
/* 把字符串转换成Utf8编码*/
public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else {
基于jsp的作业批改系统
byte[] b; try {
b = Character.toString(c).getBytes(\); }catch (Exception ex) { System.out.println(ex); b = new byte[0]; }
for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) { k += 256; }
sb.append(\ + Integer.toHexString(k). toUpperCase()); } }
return sb.toString(); }
基于jsp的作业批改系统
第四章 系统功能实现
在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。
4.1系统登陆页面实现
1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,用户需要正确的账号和密码登录本系统。
2.程序运行效果图如图4.1所示:
图4.1 系统登陆页面设计
3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,验证通过进入对应的页面,loginservice关键代码:
public String login(String userName,String userPw,int userType) {
String result=\;
if(userType==0)//系统管理员登陆 {
String sql=\; Object[] params={userName,userPw};