核心提示:开发一个web应用,已知在某文件里边有某些数据,实现这些数据的查询,删除和添加,此处文件为电脑c盘下桌面上名字叫data1.txt的文件TXT文档中,源数据为:其中,名字和专业和班级和方向之间都是一个...
开发一个web应用,已知在某文件里边有某些数据,实现这些数据的查询,删除和添加,此处文件为电脑c盘下桌面上名字叫data1.txt的文件
TXT文档中,源数据为:
其中,名字和专业和班级和方向之间都是一个退格,方向后为换行;
先写一个message类:
package com.it.test; public class message { private String name;// private String major;// private String classes;// private String direction;// /** * @return the name */ public message(String name,String major,String classes,String direction) { this.name =name; this.major=major; this.classes=classes; this.direction=direction; } public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the major */ public String getMajor() { return major; } /** * @param major the major to set */ public void setMajor(String major) { this.major = major; } /** * @return the classes */ public String getClasses() { return classes; } /** * @param classes the classes to set */ public void setClasses(String classes) { this.classes = classes; } /** * @return the direction */ public String getDirection() { return direction; } /** * @param direction the direction to set */ public void setDirection(String direction) { this.direction = direction; } }然后,写一个method类,提供查找,添加删除方法
package com.it.test; import java.util.*; import java.io.*; public class method { Listlist=new LinkedList<>();//创建的新list public void add(String name,String major,String classes,String direction)//添加元素 { message m=new message(name,major,classes,direction); list.add(m); } public message findname(String name)//按名字查找 { int i; for(i=0;i
然后写一个servlet,作为后台控制:
package com.it.test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; @SuppressWarnings("serial") public class Test01 extends HttpServlet { /** * The doGet method of the servlet. * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } /** * The doPost method of the servlet. */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { method me=new method();//由于每次跳转use.jsp,就会调用Test01,所以如果文件里边的数据不变,则删除无效 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String pathname="C:\\Users\\Sky\\Desktop\\data1.txt";//list存储为文件里边的数据,如果文件数据不变,则list不会变 File filename=new File(pathname); InputStreamReader reader=new InputStreamReader(new FileInputStream(filename)); BufferedReader buffer=new BufferedReader(reader); String line=buffer.readLine(); while(line!=null) { //response.getWriter().write(line+" "); String help[]=line.split("\\t");//把文件每行数据按退格分开 if(help.length==4) me.add(help[0], help[1], help[2], help[3]);//存入list集合 // for(int i=0;i<4;i++) // { // response.getWriter().write(help[i]); // } line=buffer.readLine();//然后读取下一行 } buffer.close(); String username=null; String name=null; username=request.getParameter("username"); name=request.getParameter("name"); if((username==null||username.trim().isEmpty())&&(name==null||name.trim().isEmpty()))//查询和删除都为空时,显示姓名不能为空 { request.setAttribute("msg", "姓名不能为空"); request.getRequestDispatcher("/use.jsp").forward(request, response); return ; } if(me.findname(username)!=null&&(name==null||name.trim().isEmpty()))//删除为空,查询不为空,并且查询到了 { request.setAttribute("msg", "姓名 "+me.findname(username).getName()+" 专业"+me.findname(username).getMajor()+" 班级"+me.findname(username).getClasses()+" 方向 :"+me.findname(username).getDirection()); request.getRequestDispatcher("/use.jsp").forward(request, response); return ; } if(me.findname(username)==null&&(name==null||name.trim().isEmpty()))//删除为空,查询不为空,没有查询到 { request.setAttribute("msg", "("+username+")"+"查无此人"); request.getRequestDispatcher("/use.jsp").forward(request, response); return ; } if((username==null||username.trim().isEmpty())&&(name==null||name.trim().isEmpty()))//无效代码,请忽略 { request.setAttribute("msg", "姓名不能为空"); request.getRequestDispatcher("/use.jsp").forward(request, response); return ; } int flag=me.deletename(name);//表示删除结果 if((username==null||username.trim().isEmpty())&&flag==0)//查询为空,删除不为空,删除失败 { request.setAttribute("msg", "("+name+")"+"查无此人"); request.getRequestDispatcher("/use.jsp").forward(request, response); return ; } if((username==null||username.trim().isEmpty())&&flag==1)//查询为空,删除不为空,删除成功 { request.setAttribute("msg", "("+name+")"+"已删除"); request.getRequestDispatcher("/use.jsp").forward(request, response); return ; } } }最后,写出主要的jsp去调用servlet:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>My JSP 'use.jsp' starting page
欢迎使用
${msg }
按照文件给的数据,查询"赵仕魁",得到:
然后删除"赵仕魁"
再查询“赵仕魁”:
最后再看文件里边的数据:
赵仕魁已经被删除了!
由于没有接数据库,并且不会用java对txt文件进行数据修改,用了一个不好的方法,先存到list里边,删除元素时,把文件也删除掉,然后建一个跟原文件名字一样的文件,由于需要删除的元素已经被list给删除了,然后按照list里边的元素,一个一个写到文件里边,再查询时,文件就没有删除过的元素了。