当前类绝对路径问题
public class testPath {
//读取同一文件夹下类绝对路径
public static String main(String[] args) {
// TODO Auto-generated method stub
String path=(Thread.currentThread().getContextClassLoader().getResource("")).toString().substring(6);
System.out.println(path.substring(0,(path.length()-16)));
return path.substring(0,(path.length()-16));
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试合同项目查询</title>
<script>
//function displayResult(projectnames){
// document.getElementById("tb_nam").value = projectnames
//}
</script>
<style>
h1 {
margin: auto;
width: 50%;
text-align: center;
text-shadow: 5px 5px 5px lime;
}
table, td, th {
border-collapse: collapse;
margin: auto;
width: 50%;
}
</style>
</head>
<body>
<h1>测试项目查询</h1>
</body>
<form name="f1" id="f1"
action="http://192.168.3.26:8080/gpms/readAllTable" method="post">
<table border=1>
<tr>
<td colspan="2"><input type="text" name="project_name" value=""
size=95%></td>
<th rowspan="3" align="left"><input type="submit" value="开始查询">
</th>
</tr>
<tr>
<td><input type="radio" name="projectnames"
onclick="displayResult(this.value)" value="report_project_2009_2021">已签订的合同项目</td>
<td><input type="radio" name="projectnames" checked
onclick="displayResult(this.value)" value="cgml_no_nam">已归档的成果资料</td>
</tr>
<tr>
<td colspan="3">注:包含多个关键字时,用%隔开。如查询“滑坡%勘查%设计”,可以查出包含这三个词的内容。</td>
</tr>
</table>
</form>
</html>
package com;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class readAllTable
*/
@WebServlet("/readAllTable")
public class readAllTable extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public String porject_name = null;
public String tb_nam = null;
public String sql = null;
public readAllTable() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ResultSetMetaData data = null;
//打印类所在的当前路径
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
//读取配置文件
Properties prop = new Properties();
InputStream is = new BufferedInputStream(new FileInputStream(testPath.main(null)+"userInfo\\mysql80Infomation.properties"));
System.out.println(testPath.main(null));
prop.load(is);
String driver = prop.getProperty("mysql80driver");
String url = prop.getProperty("mysql80url");
String user = prop.getProperty("mysql80user");
String psw = prop.getProperty("mysql80password");
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String title = "查询成果数据";
String docType = "<!DOCTYPE html>\n";
//new String(str.getBytes("ISO-8859-1"),"UTF-8")告诉java虚拟机,将字符串str以"ISO8859-1"编码格式读出来,转成"UTF-8"编码格式
porject_name = "%" + new String(request.getParameter("project_name").getBytes("ISO-8859-1"),"UTF-8") + "%";
tb_nam = request.getParameter("projectnames");
System.out.println(porject_name);
System.out.println(tb_nam);
try {
// 加载数据库驱动
Class.forName(driver);
System.out.println("创建驱动成功!");
} catch (Exception e) {
System.out.println("Class Not found!!!");
}
try {
// 使用DriverManager获取数据库连接
conn = DriverManager.getConnection(url, user, psw);
System.out.println("连接数据库成功!");
// 可以做成连接字串,供查看人选择要查看的字段
sql = "SELECT * FROM gpms_db." + tb_nam + " WHERE "+prop.getProperty(tb_nam)+" LIKE " + "'" + porject_name + "'";
// 使用Connection来创建一个SQL语句被预编译并存储在PreparedStatement对象中
pstmt = conn.prepareStatement(sql);
// 在此PreparedStatement对象中执行 SQL 查询,并返回该查询生成数据的单个 ResultSet 对象
rs = pstmt.executeQuery();
// 获取ResultSet对象列信息
data = rs.getMetaData();
} catch (SQLException ex) {
ex.printStackTrace();
}
out.println(docType + "<html>\n" + "<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n"
+ "<body bgcolor=\"lime\">\n" + "<h1 align=\"center\">" + title + "</h1>\n"
+ "<form action=\"http://localhost:8080/gpms/index.html\" method=\"post\">\n"
+ "<input type=\"submit\" value=\"继续查询项目\">\n" + "</form>\n"
+ "<table width=\"100%\" border=\"1\" align=\"center\">\n" + "<tr bgcolor=\"lime\">\n");
try {
// 读取表头名称,并写入表格
for (int i = 1; i <= data.getColumnCount(); i++) {
out.print("<th>" +new String(prop.getProperty(data.getColumnName(i)).getBytes("ISO-8859-1"),"UTF-8") + "</th>");
}
out.println("</tr>\n");
// 读取表的数据,并写入表格
while (rs.next()) {
out.println("<tr>");
for (int i = 1; i <= data.getColumnCount(); i++) {
out.print("<td>" + rs.getString(i) + "</td>\n");
}
out.print("</tr>");
}
out.println("</table>\n\n</body>\n</html>");
} catch (SQLException e) {
e.printStackTrace();
}
is.close();
out.flush();
out.close();
try {
rs.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果
HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 D:\WorkSpace2022.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\gpms\userInfo\mysql80Infomation.properties (系统找不到指定的路径。)
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
java.io.FileNotFoundException: D:\WorkSpace2022.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\gpms\userInfo\mysql80Infomation.properties (系统找不到指定的路径。)
java.base/java.io.FileInputStream.open0(Native Method)
java.base/java.io.FileInputStream.open(FileInputStream.java:211)
java.base/java.io.FileInputStream.(FileInputStream.java:153)
java.base/java.io.FileInputStream.(FileInputStream.java:108)
com.readAllTable.doPost(readAllTable.java:67)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看