jsp+servlet+JDBC开发基础程序
第一步:(先在电脑内创建一个名为gk的表,我已在前面建好:https://www.cnblogs.com/z17-z/p/12849841.html)
第二步:(创建jsp页面)
#c{}增加一个id属性:text-align:center;居中
<hr/>是增加横线的HTML语言
<div id="msg">${msg}</div> 接收来自servlet的返回参数并在jsp页面中显示
其中有两个输入框,其中一个输入账号,另外一个输入密码
</br>是换行的HTML语言
当你点击提交按钮时,jsp会将你的账号和密码提交到 Zweb 这个servlet , 而传输方式是 post,这样的话在地址框内无法看到你提交的数据(使用method="get" 就会被看到)
第三步:(编写xml)
纯文本文件可以用来存储数据。其中servlet标签就是为了把servlet映射,使得jsp能连接
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>Zweb6</display-name> <servlet> <servlet-name>compute</servlet-name> <servlet-class>gk.gkservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>compute</servlet-name> <url-pattern>/gk/gkservlet</url-pattern> </servlet-mapping> </web-app>
第三步:(编写servlet)
package gk; 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; /** * Servlet implementation class gkservlet */ @WebServlet("/gkservlet") public class gkservlet extends HttpServlet { private static final long serialVersionUID = 1L; public gkservlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8");//意思是以utf-8编码机制 try { String id = request.getParameter("name");//获取来自jsp提交的name的值 String password = request.getParameter("password");//获取来自jsp提交的password的值 //将接收的数据传到gk。java验证 String msg = gk.gk(id,password);//创建一个String对象,名为msg,他的值是gk包里的gk这个class的返回值,这里把id和password这两个值传过去 request.setAttribute("msg", msg); request.getRequestDispatcher("index1.jsp").forward(request, response);//将msg的值返回给index.jsp } catch(Exception ex) { ex.printStackTrace(); } response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
第四步:(编写JDBC,连接数据库并访问你所需要的参数值值)
package gk; import java.sql.*; public class gk { public static String gk(String id, String password) { String msg = null; Connection conn = null; //连接对象 PreparedStatement pstmt = null; //预编译的语句对象 ResultSet rs = null; //查询结果集 String sql = null; //sql语句字符串 try { //第1步:加载驱动程序 Class.forName("com.mysql.jdbc.Driver"); //第2步:建立连接(与数据库服务器的连接) //连接三个参数:1.数据库的URL地址 2.用户账号 3.用户密码 conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/gk","root","19990117"); //第3步:创建语句对象 sql = "select * from gk where id=? and password=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); pstmt.setString(2, password); //第4步:执行sql语句,返回结果集 rs = pstmt.executeQuery(); //第5步:处理结果 //结果集中有一个内部工作指针,刚开始时它 //指向第1条记录的前面。通过rs.next()方法 //可以将指针移动到下一条记录上。 //从结果集中取数据就是取工作指针所指的那条记录。 //rs.getString(1):取当前记录的第1个字段的数据值 //rs.getString("字段名"):取当前记录的指定字段的值。 if (rs != null && rs.next()) { msg = rs.getString("gkf"); String name = rs.getString("name"); msg = name + "同学,你的高考成绩为:" + msg + "分!"; } else { msg = "抱歉,你的准考证号或查询密码有误!"; } } catch (Exception e) { System.out.println("数据库异常!"); e.printStackTrace(); } finally { //打开的每个对象都要占内存空间 //为了释放内存空间,必须关闭它们。 //按打开对象的逆序关闭对象 try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (Exception ex) { } } return msg; } }
第五步:(开启Tomcat,并输入你的要查询的id和password)