OK
- 首先我们在eclipse建立一个Dynamic Web project工程
如图2.在工程下的Java Resources下的src上new上三个包
再第一个bean里面我们将放上我们的对象模板
第二个里面我放的是是需要解析的文件
第三个就是要进行逻辑操作的核心代码
我们首先看一下Student里面的代码
这个代码很简单根据我吗要在前台显示的数据写一个学生类,在自动生成的set和get方法
package com.briup.bean;
public class Student {
private String name;
private String id;
private String sex;
private String year;
private double pd_score;
private double tk_score;
private double xz_score;
private double jt_score;
private double zf_score;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public double getPd_score() {
return pd_score;
}
public void setPd_score(double pd_score) {
this.pd_score = pd_score;
}
public double getTk_score() {
return tk_score;
}
public void setTk_score(double tk_score) {
this.tk_score = tk_score;
}
public double getXz_score() {
return xz_score;
}
public void setXz_score(double xz_score) {
this.xz_score = xz_score;
}
public double getJt_score() {
return jt_score;
}
public void setJt_score(double jt_score) {
this.jt_score = jt_score;
}
public double getZf_score() {
return zf_score;
}
public void setZf_score(double zf_score) {
this.zf_score = zf_score;
}
}
在life里有两个文件
文件格式如下(应为涉及到隐私问题所以不供全部文件,一下文件信息是我根据文件格式自己捏造的,如有雷同,纯属巧合,如果大家需要使用也可以更具文件格式,自行捏造)
当然如果你有数据,可以在看完之后,在可以自写StudentServlet,解析不同格式的数据
当然如果你有数据,可以在看完之后,在可以自写StudentServlet,解析不同格式的数据
当然如果你有数据,可以在看完之后,在可以自写StudentServlet,解析不同格式的数据
t_score.txt
0009401001 8 8 9 22
0009401002 7 3 10 12
0009401003 3 8 7 5
0009401004 8 10 15 23
0009401005 10 7 11 19
0009401006 5 4 5 10
0009401007 8 5 13 28
0009401008 9 15 15 24
t_student.txt
0009401001 王丹丹 女 2009
0009401002 李卫东 男 2009
0009401003 宋二飞 男 2009
0009401004 陈登峰 男 2009
0009401005 陆飒文 男 2009
0009401006 梁新开 男 2009
0009401007 陈卡凡 女 2009
0009401008 藤原浩 男 2009
下面是StudentServlet里面的内容(每一步,注释很详细,如果有不懂的可以私信我或者是评论)
package com.briup.servlet;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.briup.bean.Student;
@WebServlet("/stu") //很重要!!!标识前台动作时执行的地方
public class StudentServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Student> list=new ArrayList<Student>(); //创建一个学生类型的List列表
File file_t_score=new File("D://Java_Basic//Shixun//School//src//com//briup//file//t_score.txt");//创建一个文件对象指向file_t_score
File file_t_student=new File("D://Java_Basic//Shixun//School//src//com//briup//file//t_student.txt");//创建一个文件对象指向file_t_student
//==================================================解析file_t_score文开始位置
if(file_t_score.exists()) { //判断文件是否还有信息
System.out.println("file_t_score开始解析");//为了后台更好的看到程序运行的过程
Reader in1=new FileReader(file_t_score);//创建一个输出流对象
BufferedReader b1=new BufferedReader(in1);//把这个用工具类BufferedReader包装起来,以便于可以使用读一行和一直读完的功能
//解析第一个分数文件,并将信息加入Student列表
while(b1.ready()) { //一直读完
Student stu=new Student(); //创建一个学生对象
String[] s=b1.readLine().split("\t");//使用b1读一行,并且以制表符“/t”分隔开来,赋给字符数组s
stu.setId(s[0]); //第一个数组为ID
stu.setXz_score(Double.parseDouble(s[1]));//第二个数组为选择题分数,将String转换为double形
stu.setTk_score(Double.parseDouble(s[2]));//第三个数组为填空题分数,将String转换为double形
stu.setPd_score(Double.parseDouble(s[3]));//第四个数组为判断题分数,将String转换为double形
stu.setJt_score(Double.parseDouble(s[4]));//第五个数组为判断题分数,将String转换为double形
//将四个相加为总分
stu.setZf_score(Double.parseDouble(s[1])+Double.parseDouble(s[2])+Double.parseDouble(s[3])+Double.parseDouble(s[4]));
list.add(stu); //将这个对象添加到创建的list列表中
}
System.out.println("file_t_score解析完成");//为了后台更好的看到程序运行的过程
}else {
System.out.println("file_t_score路径错误");//为了后台更好的看到程序运行的过程
}
//============================================解析file_t_score文结束位置
//=========================解析第二个分数文件,并将姓名,和性别,与学号匹配后信息加入Student列表开始
if(file_t_student.exists()) { //判断file_t_student文件是否存在
System.out.println("file_t_student开始解析"); //为了后台更好的看到程序运行的过程
Reader in2=new FileReader(file_t_student); //创建一个输出流
BufferedReader b2=new BufferedReader(in2); //把这个用工具类BufferedReader包装起来,以便于可以使用读一行和一直读完的功能
while(b2.ready()) { //读完
String[] s2=b2.readLine().split("\t"); //使用b2读一行,并且以制表符“/t”分隔开来,赋给字符数组s2
for(int i = 0 ; i < list.size() ; i++) { //找到ID所对应的名字和性别
if(s2[0].equals(list.get(i).getId())) {//网站list列表中student对象的信息
list.get(i).setName(s2[1]);
list.get(i).setSex(s2[2]);
}
}
}
System.out.println("file_t_student解析完成");//为了后台更好的看到程序运行的过程
}else {
System.out.println("file_t_student路径错误");//为了后台更好的看到程序运行的过程
}
System.out.println("============================");//为了后台更好的看到程序运行的过程
//========================解析第二个分数文件,并将姓名,和性别,与学号匹配后信息加入Student列表结束
//============================================按照学号进行排序开始位置
//将list中的元素按学号进行排序
Collections.sort(list, new Comparator<Student>(){
public int compare( Student s1, Student s2) {
//按照学号进行升序排列
if(s1.getId().compareTo(s2.getId())>0){
return 1;
}else {
return -1;
}
}
}
);
//==============================================按照学号进行排序结束位置
//============================================登陆功能的验证开始位置
request.setAttribute("list", list); //
int a; //为了验证ID是否存在的变量
String name; //将得到的ID在数据查找,若存在则将此ID保存在name中,在将他传递给前台
String id=request.getParameter("name"); //从前台获取到的账号ID
String pass=request.getParameter("pass"); //从前台获取到的账号密码
request.setCharacterEncoding("UTF-8"); //将编码设为UTF-8
response.setCharacterEncoding("UTF-8");
for(a=0;a<list.size();a++) { //遍历list集合
if(list.get(a).getId().equals(id)&&"123".equals(pass)) { //判断是否存在前台传过来的ID
name=list.get(a).getName(); //将ID所对应的名字保存
request.setAttribute("msg",name+"登录成功"); //将名字和登录成功信息传递给前台
//将名字和登录欢迎信息传递给前台
request.setAttribute("msg1","=============================================="+name+"欢迎您==========================");
request.getRequestDispatcher("/emp/empList.jsp").forward(request, response);//跳转到emp下前台的empList.jsp界面
break; //已经找到跳出遍历
}
}
if(a==list.size()) { //如果没有找到,那么a就会等于list.size()
request.setAttribute("msg","用户名或密码错误");//将用户名或密码错误信息传递给前台
request.getRequestDispatcher("login.jsp").forward(request, response);//跳转登录界面
}
//==================================================登陆功能的验证结束位置
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response); //应为目的相同所以doPose和doGet功能相同
}
}
在简单的txt文档后台解析到前台展示加登录验证功能(3)我将提供前端的代码