The code was running well before till i included the code of reading a text file in my servlet program. Actually i need to read the text file and using regex pattern match have to search for pattern in the text file. I tried a lot but i cant figure out. Every time i run it using localhost it directly goes into catch and before i put try-catch it was showing error:500 file not found "database.txt"
whereas my database.txt
is in the same place as my servlet program webapps/myprogram/database.txt
. I am using tomcat8. Please help me why it is not getting the file and entering the catch..
Here is my servlet program:
import java.io.IOException;
import java.io.PrintWriter;
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 java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import java.io.*;
/**
* @author hp
*/
@WebServlet(urlPatterns = {"/servlet1"})
public class servlet1 extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String txt = request.getParameter("query");
try {
FileInputStream fstream = new FileInputStream("database.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
if (txt.matches("Who is the(.*)")) {
String re1 = ".*?";
String re2 = "(?:[a-z][a-z]+)";
String re3 = ".*?";
String re4 = "(?:[a-z][a-z]+)";
String re5 = ".*?";
String re6 = "(?:[a-z][a-z]+)";
String re7 = ".*?";
String re8 = "((?:[a-z][a-z]+))";
String re9 = ".*?";
String re10 = "(?:[a-z][a-z]+)";
String re11 = ".*?";
String re12 = "((?:[a-z][a-z]+))";
Pattern p =
Pattern.compile(re1 + re2 + re3 + re4 + re5 + re6 + re7 + re8 + re9 + re10 + re11 + re12, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(txt);
if (m.find()) {
String word1 = m.group(1);
String word2 = m.group(2);
String z = word2.toString() + "&&" + word1.toString() + "&&" + "name.*" + "\n";
while ((strLine = br.readLine()) != null) {
if (Pattern.matches(z, strLine)) {
Pattern pattern = Pattern.compile("'(.*?)'");
Matcher matcher = pattern.matcher(strLine);
if (matcher.find()) {
String a = matcher.group(1);
request.setAttribute("a", a);
request.getRequestDispatcher("/output.jsp").forward(request, response);
}
}
}
}
} else {
String z = "Sorry......Invalid query !!!";
request.setAttribute("z", z);
request.getRequestDispatcher("/output.jsp").forward(request, response);
}
} catch (Exception e) {
throw new ServletException(e);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
doGet(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}