核心提示:开发一个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里边的元素,一个一个写到文件里边,再查询时,文件就没有删除过的元素了。


