【JavaWeb开发-Servlet】day03-URL参数传递与MySQL数据库连接

目录

1、登录示例,谁用url传递参数

 (1)创建一个Servlet类,名字叫做loginServlet

 (2)保留需要的部分

 (3)删除多余代码

 (4)编写loginServlet.class

 (5)编写web.xml

 (6)输入带有参数的网址,进行测试

 2、JAVA 链接Mysql数据库 JDBC

         (1)创建一个数据库

         (2) 导入数据库驱动包

         (3) 加载驱动

         (4) 创建数据表使用java代码实现查询功能

(5) 使用Prep执行sql语句

(6) 查询数据库内的全部信息并显示在网页上


1、登录示例,谁用url传递参数

(1)创建一个Servlet类,名字叫做loginServlet

 (2)保留需要的部分

 (3)删除多余代码

package firsttest;

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;

public class loginServlet extends HttpServlet {
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

(4)编写loginServlet.class

package firsttest;

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;

public class loginServlet extends HttpServlet {
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取前端 发送用用户名和密码
		//获取前端传递到服务器的参数值
		//reqeust中getParameter方法可以通过传递数据的参数名获取与之对应的参数只
		String name=request.getParameter("name");
		String pwd=request.getParameter("pwd");
				
		//将浏览器传递过来的用户名和密码进行比对  如果正确返回登录成功 如果错误 返回登录失败
		response.setContentType("text/html");
		PrintWriter out=response.getWriter();
		if(name.equals("zs")&&pwd.equals("1234")){
			out.println("zhengque");
		}else{
			out.println("cuowu");
		}
		out.close();
	}

}

(5)编写web.xml

<?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_3_1.xsd" id="WebApp_ID" version="3.1">
	<servlet>
		<servlet-name>hello</servlet-name>
		<servlet-class>firsttest.testServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
	
		<servlet>
		<servlet-name>login</servlet-name>
		<servlet-class>firsttest.loginServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>login</servlet-name>
		<url-pattern>/login</url-pattern>
	</servlet-mapping>
</web-app>

(6)输入带有参数的网址,进行测试

http://127.0.0.1:8080/firsttest/login?name=zs&pwd=1234

 http://127.0.0.1:8080/firsttest/login?name=zs&pwd=123

上面再url中暴露参数的请求方式为get请求,下面举一个post请求的例子。

jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<form action="a" method="post">
		请输入你的留言:<input name="msg" >
		<input type="submit" value="提交">
	</form>
</body>
</html>

访问页面,输入:

 

 输出:

可以看到在使用post请求时用表单传递的数据参数不会显示在url上面,相对于get请求来说更安全。 

 2、JAVA 链接Mysql数据库 JDBC

(1)创建一个数据库

        首先在电脑上安装5.0版本的MySQL数据库

链接:https://pan.baidu.com/s/1Y2CzWFokyutXERLvWXcMdA 
提取码:9lsr 

        在安装一个数据库可视化管理工具:

 链接:https://pan.baidu.com/s/1OkQxxOZu5NHql8-tGp_54g 
提取码:izl2 

       

(2) 导入数据库驱动包

链接:https://pan.baidu.com/s/1mmJMxJguflZbW_cskYOIhw 
提取码:erxh 

将下载好的驱动包(此处的驱动必须和mysql版本相对应)拖入WEB-INF的lib文件夹

 此时就可以在Web App Library中看到驱动(自动生成)说明导入成功了。


(3) 加载驱动

         使用Navicat创建一个数据库test:

        编写一个数据库连接类:

package firsttest;

import java.sql.Connection;
import java.sql.DriverManager;

//数据库工具类 提供java 链接数据库的操作代码
public class DBUtil {

	//定义一个java与数据库的链接类型  返回值是链接数据库的对象
	//5.0版本链接
	public static Connection getConnection(){
		Connection con=null;
		try {
			//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//获取mysql数据的链接对象
			String url="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8";
			String name="root";
			String pwd="123456";
			con=DriverManager.getConnection(url,name,pwd);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
}

        编写一个测试连接类:

package firsttest;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;



public class DBUtilTest {

	public static void main(String[] args) {
		System.out.println(DBUtil.getConnection());
	}

}

        输出:

         说明已连接成功。

(4) 创建数据表使用java代码实现查询功能

        打开Navicat使用可视化功能在test数据库中创建一个表students:

 在里面手动添加几个数据

写代码:

连接数据库类:

package firsttest;

import java.sql.Connection;
import java.sql.DriverManager;

//数据库工具类 提供java 链接数据库的操作代码
public class DBUtil {

	//定义一个java与数据库的链接类型  返回值是链接数据库的对象
	//5.0版本链接
	public static Connection getConnection(){
		Connection con=null;
		try {
			//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//获取mysql数据的链接对象
			String url="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8";
			String name="root";
			String pwd="123456";
			con=DriverManager.getConnection(url,name,pwd);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
}

 测试数据库类:

package firsttest;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;



public class DBUtilTest {

	public static void main(String[] args) {
		//System.out.println(DBUtil.getConnection());
		Scanner sc=new Scanner(System.in);
		//获取学生姓名
		String name=sc.nextLine();
		//获取学生学号
		String num=sc.nextLine();
		System.out.println(name+":"+num);
		//获取数据库链接
		Connection conn=DBUtil.getConnection();
		try {
			//获取数据库语句操作对象
			Statement state=conn.createStatement();
			//定义sql语句
			String sql="select * from students where name='"+name+"' and number='"+num+"'";
			//让Statment对象向数据库发送上面的sql语句 并获取查询语句 查询的结果集对象
			ResultSet rs=state.executeQuery(sql);
			//从结果及中查询出对应的数据信息
			//判断是否查询到了结果
			while(rs.next()){
				System.out.println("学生存在");
			}	
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}







 测试结果

 (5) 使用Prep执行sql语句

package firsttest;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;



public class DBUtilTest {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		//获取用户名
		String name=sc.nextLine();
		//获取用户密码
		String num=sc.nextLine();
		//System.out.println(name+":"+num);
		//获取数据库链接
		Connection conn=DBUtil.getConnection();
		
		//定义sql语句
		String sql="select * from students where name=? and number=?";
		//获取数据库语句操作对象PreparedStatment
		try {
			PreparedStatement prep=conn.prepareStatement(sql);
			//为两个占位符传递参数
			prep.setString(1, name);
			prep.setString(2, num);
			//PreparedStatement 向数据库发送sql语句并执行  获取返回的结果集对象
			ResultSet rs=prep.executeQuery();
			while(rs.next()){
				System.out.println("学生存在");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}






(6) 查询数据库内的全部信息并显示在网页上

创建一个Servlet类:findAllServlet.class

package firsttest;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class findAllServlet extends HttpServlet {

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Connection con=DBUtil.getConnection();
		String sql="select * from students";
		PreparedStatement prep;
		try {
			prep = con.prepareStatement(sql);
			ResultSet rs=prep.executeQuery();
			response.setContentType("text/html;charset=utf-8");
			PrintWriter out=response.getWriter();
			out.println("<table width='500px' border='5px' >");
			out.println("<tr><td>id</td><td>name</td><td>number</td></tr>");
			
			
			while(rs.next()){
				//获取数据中查询出的数据
				String num=rs.getString("number");
				String name=rs.getString("name");
				double math=rs.getDouble("math");
				out.println("<tr><td>"+num+"</td><td>"+name+"</td><td>"+math+"</td></tr>");
			}
			out.println("</table>");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
				
		
	}

}

修改web.xml

<?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_3_1.xsd" id="WebApp_ID" version="3.1">
	<servlet>
		<servlet-name>hello</servlet-name>
		<servlet-class>firsttest.testServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
	
		<servlet>
		<servlet-name>login</servlet-name>
		<servlet-class>firsttest.loginServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>login</servlet-name>
		<url-pattern>/login</url-pattern>
	</servlet-mapping>
	
	<servlet>
    	<servlet-name>find</servlet-name>
    	<servlet-class>firsttest.findAllServlet</servlet-class>
  	</servlet>
  	<servlet-mapping>
    	<servlet-name>find</servlet-name>
    	<url-pattern>/findAll</url-pattern>
  	</servlet-mapping>
</web-app>

输入网址http://127.0.0.1:8080/firsttest/findAll查看结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值