1 概述
系统应该要具备以下功能:
- 用户注册,主要完成非系统用户注册成为该系统的用户,注册成功后可以提交论文;
- 论文管理,主要是包括论文提交以及管理员对所有新提交的论文进行管理,包括论文初步审核、分配评阅者、评阅论文以及论文最终评阅结果;
- 评阅专家管理,主要完成对评阅专家的基本管理,包括增加、修改、删除、查询等基本信息的管理,同时包括对评阅专家登录账号的管理;
- 个人信息管理,主要是指个人密码修改,注册用户、管理员、评阅专家都可以对自己的密码进行管理以及评阅专家对个人基本信息的更新;
2 数据库表
表3-4 评阅专家信息表
表名 | Expert | |||
描述 | 存放所有论文评阅专家的基本信息,管理员来对其进行管理 | |||
字段名 | 数据类型 | 长度 | 是否为空 | 描述 |
EX_id | int |
| Notnull | 专家编号[主键] |
EX _name | varchar | 100 | Notnull | 姓名 |
Ex_sex | varchar | 20 | Notnull | 性别 |
EX _title | varchar | 100 | Notnull | 职称 |
EX _unit | Varchar | 100 | Notnull | 单位 |
Ex_ads | Varchar | 100 |
| 地址 |
EX_code | Varchar | 100 |
| 邮编 |
EX _tel | Varchar | 100 | Notnull | 联系电话 |
EX _email | Varchar | 100 | Notnull | 电子邮箱 |
EX _domain1 | Varchar | 500 | Notnull | 研究领域一 |
EX _domain2 | Varchar | 500 |
| 研究领域二 |
EX _domain3 | Varchar | 500 |
| 研究领域三 |
表3-5 论文评阅意见表
表名 | Comment | |||
描述 | 存放评阅专家对所评阅的论文发表的评阅意见 | |||
字段名 | 数据类型 | 长度 | 是否为空 | 描述 |
Com _id | int |
| Notnull | 意见编号[主键] |
Ar_id | int |
| Notnull | 论文编号,外键,引用(Article)[Ar_id] |
Ex_id | int |
| Notnull | 评阅者编号,外键,引用(Reader)[Reader_id] |
Com_note | varchar | 1000 |
| 评阅意见 |
3 关键代码
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//利用oreilly.servlet.multipartrequest实现文件上传
import com.oreilly.servlet.MultipartRequest;
import dao.*;
import entity.*;
public class ArticleServlet extends HttpServlet {
public ArticleServlet() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取操作名
String oper=request.getParameter("oper");
if(oper!=null){
if(oper.equals("add")){ //添加论文
add(request,response);
}
if(oper.equals("check")){ //论文初审
check(request,response);
}
if(oper.equals("ar_expert_add")){ //论文分配论文
ar_expert_add(request,response);
}
if(oper.equals("add_result")){ //给出论文最后的评阅结果
add_result(request,response);
}
}
}
//为论文添加专家
private void ar_expert_add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//取得session中的Ar_id
HttpSession session=request.getSession();
String arid=(String)session.getAttribute("ar_id");
int ar_id=Integer.parseInt(arid);
System.out.println("ar_expert_add de servlet de id is "+ar_id);
//现在获得页面上checkbox选中了的Ex_id
//String arid=request.getAttribute("selected_ex");
String[] eids = request.getParameterValues("selected_ex");
ArticleDAO dao=new ArticleDAO();
article a=new article();
comment obj=new comment();
boolean result=false;
boolean resutl2=false;
System.out.println(eids.length);
// for(String eid1:eids) {
// System.out.println("edid zhangll is "+eid1);
// }
for(String eid : eids){
System.out.println("获得的checkbox的值是 "+eid);
int ex_id=Integer.parseInt(eid);
String note="";
String state="评阅中...";
//comment中
obj.setAr_id(ar_id);
obj.setEx_id(ex_id);
obj.setCom_note(note);
//article中
a.setAr_id(ar_id);
a.setAr_state(state);
a.setAr_result("");
result=dao.article_ex_add(obj); //插入数据到comment
resutl2=dao.update(a); //更改article的状态
}
if(result&&resutl2){
response.sendRedirect("article_expert_add_ok.jsp");
System.out.println("专家分配------成功");
}else{
response.sendRedirect("MyJsptest.jsp");
System.out.println("专家分配------失败");
}
}
//上传论文
private void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
ArticleDAO dao=new ArticleDAO();
//获取上传文件的名称
//开始写上传的代码
//1.查找文件上传的位置
//获取当前项目的发布,路径
//String savepath = request.getRealPath("/WebRoot");
//这个是获取项目的路径,上传的文件跟着项目走
String savepath=request.getSession().getServletContext().getRealPath("/web/file");
//这个是本地的存储路径
//String savepath = "e:/";
System.out.println("存储路径是"+savepath);
//2.设置文件上传的大小限制。10M
int maxsize = 10*1024*1024;
MultipartRequest muti=null;
try{
//3.创建对象,利用构造函数将文件上传
muti = new MultipartRequest(request,savepath,maxsize,"gbk");
System.out.println("上传文件太大--2");
//4.获取上传的图片名==同时把名称写入数据库,uploadfile是文件上传按钮的名称name
String fileName = muti.getFilesystemName("uploadfile");
//文件上传成功!
System.out.println("文件上传成功!---->:"+fileName);
//文件的名称,存入数据库article表中
String name=fileName;
//获取传值
String Title=muti.getParameter("title");
String Abstract=muti.getParameter("abstract");
String key=muti.getParameter("key");
//获得论文提交者的ID----user_id
UserDAO udao=new UserDAO();
HttpSession session=request.getSession();
String user_name=(String)session.getAttribute("loginName");
String user_pwd=(String) session.getAttribute("password");
int User_id=udao.getuser_id(user_name, user_pwd);
System.out.println("获得的用户id是:"+User_id);
//获取系统时间
String time=dao.getSystemTime();
//初始状态为0---表示提交成功,等待评阅
String state="等待初审";
// 初审结果为空
String result="";
String writer1_name=muti.getParameter("writer1_name");
String writer1_unit=muti.getParameter("writer1_unit");
String writer1_email=muti.getParameter("writer1_email");
String writer1_code=muti.getParameter("writer1_code");
String writer1_adr=muti.getParameter("writer1_adr");
String writer2_name=muti.getParameter("writer2_name");
String writer2_unit=muti.getParameter("writer2_unit");
String writer2_email=muti.getParameter("writer2_email");
String writer2_code=muti.getParameter("writer2_code");
String writer2_adr=muti.getParameter("writer2_adr");
String writer3_name=muti.getParameter("name3");
String writer3_unit=muti.getParameter("unit3");
String writer3_email=muti.getParameter("email3");
String writer3_code=muti.getParameter("code3");
String writer3_adr=muti.getParameter("adr3");
String writer4_name=muti.getParameter("name4");
String writer4_unit=muti.getParameter("unit4");
String writer4_email=muti.getParameter("email4");
String writer4_code=muti.getParameter("code4");
String writer4_adr=muti.getParameter("adr4");
String writer5_name=muti.getParameter("name5");
String writer5_unit=muti.getParameter("unit5");
String writer5_email=muti.getParameter("email5");
String writer5_code=muti.getParameter("code5");
String writer5_adr=muti.getParameter("adr5");
System.out.println(writer1_name+" "+writer1_unit+" "+writer1_email+ " "+writer1_code+" "+writer1_adr);
System.out.println(writer2_name+" "+writer2_unit+" "+writer2_email+ " "+writer2_code+" "+writer2_adr);
System.out.println(writer3_name+" "+writer3_unit+" "+writer3_email+ " "+writer3_code+" "+writer3_adr);
System.out.println(writer4_name+" "+writer4_unit+" "+writer4_email+ " "+writer4_code+" "+writer4_adr);
//数据库操作类
//数据库操作类
//数据库操作类
//数据库操作类
article obj=new article();
obj.setAr_title(Title);
obj.setAr_abstract(Abstract);
obj.setAr_key(key);
obj.setAr_name(name);
obj.setUser_id(User_id);
obj.setAr_time(time);
obj.setAr_state(state);
obj.setAr_result(result);
obj.setWriter1_name(writer1_name);
obj.setWriter1_unit(writer1_unit);
obj.setWriter1_email(writer1_email);
obj.setWriter1_code(writer1_code);
obj.setWriter1_adr(writer1_adr);
obj.setWriter2_name(writer2_name);
obj.setWriter2_unit(writer2_unit);
obj.setWriter2_email(writer2_email);
obj.setWriter2_code(writer2_code);
obj.setWriter2_adr(writer2_adr);
obj.setWriter3_name(writer3_name);
obj.setWriter3_unit(writer3_unit);
obj.setWriter3_email(writer3_email);
obj.setWriter3_code(writer3_code);
obj.setWriter3_adr(writer3_adr);
obj.setWriter4_name(writer4_name);
obj.setWriter4_unit(writer4_unit);
obj.setWriter4_email(writer4_email);
obj.setWriter4_code(writer4_code);
obj.setWriter4_adr(writer4_adr);
obj.setWriter5_name(writer5_name);
obj.setWriter5_unit(writer5_unit);
obj.setWriter5_email(writer5_email);
obj.setWriter5_code(writer5_code);
obj.setWriter5_adr(writer5_adr);
boolean Result=dao.add(obj);
if(Result){
response.sendRedirect("article_add_ok.jsp");
System.out.println("论文提交成功!");
}else{
System.out.println("论文提交失败!");
response.sendRedirect("MyJsptest.jsp");
}
}
catch(Exception e){
//e.printStackTrace();
//上传文件太大,超过设定值
System.out.println("上传文件太大");
//弹出消息框提示注册成功
StringBuffer sb = new StringBuffer();
sb.append("<script>");
sb.append("alert(\"上传文件太大!!!\")");
sb.append("</script>");
request.setAttribute("sb",sb);
request.getRequestDispatcher("article_add.jsp").forward(request, response);
}
}
//论文初审
private void check(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
System.out.println("------------进入初审的servlet");
//获取页面上的初审意见---1.分配评阅者 2.拒绝
String result=request.getParameter("result");
String ar_id=request.getParameter("aarrid"); //页面上传过来的id
System.out.println("获得的result是"+result+" id 是"+ar_id);
if(result.equals("拒绝(不符合要求)")){
//如果不符合要求----写result字段...现在注意,更改state要和添加note一起修改数据库,保证数据的完整性
System.out.println("------------进入初审的if");
int id=Integer.parseInt(ar_id);
System.out.println("论文--初审意见--提交成功!");
//response.sendRedirect("article_check_note.jsp");
//把id保存在session中
//获取session对象
HttpSession session=request.getSession();
//session设置当前活动用户名
session.setAttribute("ar_id",id);
//request.setAttribute("ar_id",ar_id);
//内部跳转,如果要将数据显示在页面上,必修采用内部跳转
//外部跳转,浏览器地址栏发送改变,外部跳转其实完成的就是二次请求,request中值,全部丢失
request.getRequestDispatcher("article_check_note.jsp").forward(request, response);
return;
}
else{
System.out.println("------------进入初审的else");
//内部跳转====用request传递论文的id
System.out.println(ar_id);
//把id保存在session中
//获取session对象
HttpSession session=request.getSession();
//session设置当前活动用户名
session.setAttribute("ar_id",ar_id);
//request.setAttribute("ar_id",ar_id);
//内部跳转,如果要将数据显示在页面上,必修采用内部跳转
//外部跳转,浏览器地址栏发送改变,外部跳转其实完成的就是二次请求,request中值,全部丢失
request.getRequestDispatcher("article_expert_add.jsp").forward(request, response);
System.out.println("---进入专家分配页面");
}
}
//给出论文最后评阅结果
private void add_result(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
System.out.println("------------进入给出最后评阅结果的servlet");
//获取页面上的初审意见---1.录用2.修改后录用3.拒绝
ArticleDAO dao=new ArticleDAO();
String result=request.getParameter("result");
String ar_id=request.getParameter("a_id"); //页面上传过来的id
System.out.println("获得的result是"+result+" id 是"+ar_id);
int id=Integer.parseInt(ar_id);
article obj=new article();
obj.setAr_id(id);
obj.setAr_result(result);
obj.setAr_state("评阅完成");
//更新state和result
boolean result2=dao.update(obj);
if(result2){
System.out.println("评阅成功");
response.sendRedirect("article_result_add_ok.jsp");
}
else{
System.out.println("评阅失败");
response.sendRedirect("MyJsptest.jsp");
}
}
//上传论文
private void addtest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
ArticleDAO dao=new ArticleDAO();
//获取上传文件的名称
//开始写上传的代码
//1.查找文件上传的位置
//获取当前项目的发布,路径
//String savepath = request.getRealPath("/WebRoot");
//这个是获取项目的路径,上传的文件跟着项目走
String savepath=request.getSession().getServletContext().getRealPath("/web/file");
//这个是本地的存储路径
//String savepath = "e:/";
System.out.println("存储路径是"+savepath);
//2.设置文件上传的大小限制。10M
int maxsize = 10*1024*1024;
//3.创建对象,利用构造函数将文件上传
MultipartRequest muti = new MultipartRequest(request,savepath,maxsize,"gbk");
//4.获取上传的图片名==同时把名称写入数据库,uploadfile是文件上传按钮的名称name
String fileName = muti.getFilesystemName("uploadfile");
//文件上传成功!
System.out.println("文件上传成功!---->:"+fileName);
//文件的名称,存入数据库article表中
String name=fileName;
//获取传值
String Title=muti.getParameter("title");
String Abstract=muti.getParameter("abstract");
String key=muti.getParameter("key");
//获得论文提交者的ID----user_id
UserDAO udao=new UserDAO();
HttpSession session=request.getSession();
String user_name=(String)session.getAttribute("loginName");
String user_pwd=(String) session.getAttribute("password");
int User_id=udao.getuser_id(user_name, user_pwd);
System.out.println("获得的用户id是:"+User_id);
//获取系统时间
String time=dao.getSystemTime();
//初始状态为0---表示提交成功,等待评阅
String state="等待初审";
// 初审结果为空
String result="";
String writer1_name=muti.getParameter("writer1_name");
String writer1_unit=muti.getParameter("writer1_unit");
String writer1_email=muti.getParameter("writer1_email");
String writer1_code=muti.getParameter("writer1_code");
String writer1_adr=muti.getParameter("writer1_adr");
String writer2_name=muti.getParameter("writer2_name");
String writer2_unit=muti.getParameter("writer2_unit");
String writer2_email=muti.getParameter("writer2_email");
String writer2_code=muti.getParameter("writer2_code");
String writer2_adr=muti.getParameter("writer2_adr");
String writer3_name=muti.getParameter("name3");
String writer3_unit=muti.getParameter("unit3");
String writer3_email=muti.getParameter("email3");
String writer3_code=muti.getParameter("code3");
String writer3_adr=muti.getParameter("adr3");
String writer4_name=muti.getParameter("name4");
String writer4_unit=muti.getParameter("unit4");
String writer4_email=muti.getParameter("email4");
String writer4_code=muti.getParameter("code4");
String writer4_adr=muti.getParameter("adr4");
String writer5_name=muti.getParameter("name5");
String writer5_unit=muti.getParameter("unit5");
String writer5_email=muti.getParameter("email5");
String writer5_code=muti.getParameter("code5");
String writer5_adr=muti.getParameter("adr5");
System.out.println(writer1_name+" "+writer1_unit+" "+writer1_email+ " "+writer1_code+" "+writer1_adr);
System.out.println(writer2_name+" "+writer2_unit+" "+writer2_email+ " "+writer2_code+" "+writer2_adr);
System.out.println(writer3_name+" "+writer3_unit+" "+writer3_email+ " "+writer3_code+" "+writer3_adr);
System.out.println(writer4_name+" "+writer4_unit+" "+writer4_email+ " "+writer4_code+" "+writer4_adr);
//数据库操作类
//数据库操作类
//数据库操作类
//数据库操作类
article obj=new article();
obj.setAr_title(Title);
obj.setAr_abstract(Abstract);
obj.setAr_key(key);
obj.setAr_name(name);
obj.setUser_id(User_id);
obj.setAr_time(time);
obj.setAr_state(state);
obj.setAr_result(result);
obj.setWriter1_name(writer1_name);
obj.setWriter1_unit(writer1_unit);
obj.setWriter1_email(writer1_email);
obj.setWriter1_code(writer1_code);
obj.setWriter1_adr(writer1_adr);
obj.setWriter2_name(writer2_name);
obj.setWriter2_unit(writer2_unit);
obj.setWriter2_email(writer2_email);
obj.setWriter2_code(writer2_code);
obj.setWriter2_adr(writer2_adr);
obj.setWriter3_name(writer3_name);
obj.setWriter3_unit(writer3_unit);
obj.setWriter3_email(writer3_email);
obj.setWriter3_code(writer3_code);
obj.setWriter3_adr(writer3_adr);
obj.setWriter4_name(writer4_name);
obj.setWriter4_unit(writer4_unit);
obj.setWriter4_email(writer4_email);
obj.setWriter4_code(writer4_code);
obj.setWriter4_adr(writer4_adr);
obj.setWriter5_name(writer5_name);
obj.setWriter5_unit(writer5_unit);
obj.setWriter5_email(writer5_email);
obj.setWriter5_code(writer5_code);
obj.setWriter5_adr(writer5_adr);
boolean Result=dao.add(obj);
if(Result){
response.sendRedirect("article_add_ok.jsp");
System.out.println("论文提交成功!");
}else{
System.out.println("论文提交失败!");
response.sendRedirect("MyJsptest.jsp");
}
}
}
4 效果演示
idea或eclipse开发,mysql数据库