Java servlet,将数据从文本文件写入网页
我用java编写了以下servlet代码:Java servlet,将数据从文本文件写入网页,java,servlets,ioexception,Java,Servlets,Ioexception,我用java编写了以下servlet代码: package servlets; import java.io.*; import java.util.*; import javax.servlet.*; import java.net.*; public class Servlet1 extends GenericServlet{ private ServletConfig sc; public void init(ServletConfig conf) throws ServletEx
package servlets;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import java.net.*;
public class Servlet1 extends GenericServlet{
private ServletConfig sc;
public void init(ServletConfig conf) throws ServletException{
super.init(conf);
sc = conf;
}
public void read_file(){
String filename = "/web/WEB-INF/Data.txt";
BufferedReader br = new BufferedReader(new FileReader(filename));
// Why this doesn't work ?
}
public void service(ServletRequest req, ServletResponse resp) throws ServletException,IOException{
resp.setContentType("text/html; charset=windows-1251");
PrintWriter pw = resp.getWriter();
pw.println("<html><head>");
pw.println("<title>sdasdasda</title>");
pw.println("</head><body><h2>Servlet information</h2>");
pw.println("Servlet name - "+sc.getServletName()+ "<br>");
pw.println("Servlet parametrs: <br>");
//pw.println(read_file());
Enumeration names = sc.getInitParameterNames();
while(names.hasMoreElements()){
String name = (String)names.nextElement();
pw.print(name + ": ");
pw.println(sc.getInitParameter(name)+"<br>");
}
pw.println("</body></html>");
pw.flush();
pw.close();
}
public void destroy(){
sc = null;
}
}
包servlet;
导入java.io.*;
导入java.util.*;
导入javax.servlet.*;
导入java.net。*;
公共类Servlet1扩展了GenericServlet{
私人服务器配置sc;
public void init(ServletConfig conf)抛出ServletException{
super.init(conf);
sc=conf;
}
公共无效读_文件(){
字符串filename=“/web/web-INF/Data.txt”;
BufferedReader br=新的BufferedReader(新文件读取器(文件名));
//为什么这不起作用?
}
公共无效服务(ServletRequest-req,ServletResponse-resp)抛出ServletException,IOException{
相应的setContentType(“text/html;charset=windows-1251”);
PrintWriter pw=resp.getWriter();
pw.println(“”);
pw.println(“SDA”);
println(“Servlet信息”);
println(“Servlet名称-”+sc.getServletName()+”
”;
println(“Servlet参数:
”;
//println(read_file());
枚举名称=sc.getInitParameterNames();
while(names.hasMoreElements()){
字符串名称=(字符串)名称.nextElement();
打印(名称+“:”);
pw.println(sc.getInitParameter(name)+“
”;
}
pw.println(“”);
pw.flush();
关闭();
}
公共空间销毁(){
sc=null;
}
}
这个BufferedReader br=newbufferedreader(newfilereader(filename))代码>总是显示没有文件,但我把它放在ProjectName/web/web-INF/文件夹中。
如何读取此文件,或获取正确的路径
?首先,您指定的是一个绝对路径(您的路径以/
开头)
第二个FileReader不是在web应用程序中加载资源的正确方法,如果您的应用程序war未被提取,该怎么办?它仍然会失败
您应该使用获取并使用它读取资源。首先,您指定的是绝对路径(您的路径以/
开头)
第二个FileReader不是在web应用程序中加载资源的正确方法,如果您的应用程序war未被提取,该怎么办?它仍然会失败
您应该使用获取并使用它读取资源。尝试提供完整路径:在ide中,右键单击文件并转到属性;要获取绝对路径作为旁注,请在未明确指定编码的情况下,不要使用new FileReader()。在查找编码错误的过程中,您将为自己和同事省去很多痛苦。请尝试给出完整的路径:在ide中,右键单击文件并转到属性;要获取绝对路径作为旁注,请在未明确指定编码的情况下,不要使用new FileReader()。在寻找编码错误的过程中,您将为自己和您的同事省去很多痛苦。仍然是同样的问题,我将InputStream InputStream=new FileInputStream(“C:\\Users\\Volodia\\IdeaProjects\\ProjectName\\web\\web-INF\\Data.txt”)@使用FileInputStream
的user3135093与使用FileWriter
具有相同的缺点,两者都试图通过直接使用文件系统来访问文件。请确保部署中存在文件Data.txt
,并使用ServletContext\getResourceAsStream
,以便通过类路径进行访问!还是同样的问题,我把InputStream=newFileInputStream(“C:\\Users\\Volodia\\IdeaProjects\\ProjectName\\web\\web-INF\\Data.txt”)@使用FileInputStream
的user3135093与使用FileWriter
具有相同的缺点,两者都试图通过直接使用文件系统来访问文件。请确保部署中存在文件Data.txt
,并使用ServletContext\getResourceAsStream
,以便通过类路径进行访问!