我的世界Java版说我驱动过低
web.xml文件
html文件
html文件中 action=" " 双引号中调用文件的手段很多,方法很灵活.要特别注意.
举几个栗子:
1 <a href="?flag=user_regist">注册</a>
2 例:
3
要在web.xml中配置servlet配置好了后 在form的action中直接写你在web.xml中配置的<url-pattern>的名字。。例如
在form的action中就直接写AdminLogin就行了
① 完全匹配
<url-pattern>/test/</url-pattern>
② 路径匹配
③ 扩展名匹配
JSP页面提交表单给Servlet时,路径的写法要格外注意。
例如在web.xml中注册如下的servlet:
<servlet> <servlet-name>addStudent</servlet-name> <servlet-class>org.mytest.addStudent</servlet-class> </servlet> <servlet-mapping> <servlet-name>addStudent</servlet-name> <url-pattern>/servlet/addStudent</url-pattern> </servlet-mapping>假如说,你工程名字为HibernateApp3,JSP页面提交表单给servlet时有两种写法:
1. <form action=servlet/addStudent method=post>...</form> 2. <form action=/HibernateApp3/servlet/addStudentmethod=post>...</form>注意:/代表根目录,如果路径是使用/开头,Tomcat就是webApp那个目录,如果你不是/开头代表你从当前工程的目录开始,例如:webApp/HibernateApp3/
这一点非常重要,很多提交表单时发生的错误都是因为提交路径出错造成的。
这些都是从网上收集到的各种回答,总而言之,action的提交路径,和<url-pattern></url-pattern>中的路径保持一致就不会有错,不过是有前提的,就是路径入口处要是指向这个工程的,例如下面这种就是错误:
<form method="get" action="/yutao"> ,,而 <url-pattern>/yutao</url-pattern>,这样提交表单时,就会报404错误:The requested resource is not available。因为前面的“/”,指的是服务器的根目录,也就是Tomcat目录下的webapps。改为:<form method="get" action="/工程名/yutao",即可。
url-parrern里面放的是servlet访问路径,我目前的结论是这路径随便写都写,当然,注意我上面说的。。。
import java.sql.*; import java.io.*; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/FindFootOrPk") public class FindFootOrPk extends HttpServlet { private static final long serialVersionUID = 1L; //JDBC驱动名和数据库URL static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; static final String DB_URL="jdbc:mysql://localhost:3306/dudu";//dudu数据库名称 //数据库用户名和密码 static final String USER="root"; static final String PASS="123456"; /** * @see HttpServlet#HttpServlet() */ public FindFootOrPk() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn=null; Statement stmt=null; //设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); String title="前后端打通,连接数据库,我的世界来啦!"; // String name=request.getParameter("pk"); // String link=request.getParameter("link"); String docType = "<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n"); try{ // 注册 JDBC 驱动器 Class.forName("com.mysql.jdbc.Driver"); // 打开一个连接 conn = DriverManager.getConnection(DB_URL,USER,PASS); out.println("数据库连接成功!"); // 执行 SQL 查询 stmt = conn.createStatement();// String sql; //foot_ball 数据库表名称 sql = "SELECT*FROM foot_ball"; //sql语句,一定要保证正确.最好测试一下,要不html不显示. ResultSet rs = stmt.executeQuery(sql); //sql语句执行的结果 // 展开结果集数据库 while(rs.next()){ // 通过字段检索 int id = rs.getInt("id"); String tream = rs.getString("tream"); String url = rs.getString("url"); // 输出数据 out.println("ID: " + id); out.println(", 球队: " + tream); out.println(", 站点 URL: " + url); out.println("<br />"); } out.println("</body></html>"); // 完成后关闭 rs.close(); stmt.close(); conn.close(); } catch(SQLException se) { // 处理 JDBC 错误 se.printStackTrace(); } catch(Exception e) { // 处理 Class.forName 错误 e.printStackTrace(); }finally{ // 最后是用于关闭资源的块 try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }