目录
(1)创建一个Servlet类,名字叫做loginServlet
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查看结果: