JSP存取数据库

  • 实验目的

掌握服务器端技术Servlet,理解Servlet的生命周期;掌握Jsp的实质,认识out、

request、response、session、application等JSP内置对象,灵活应用这些内置对象进行实际与数据库相连的项目开发。

  • 实验环境

IDEA2022.2

  • 实验内容

使用JSP+JDBC完成一个用户登录的程序,然后实现对一张表的添加、删除、查找和修

改操作。

  • 实验步骤

1、引入jdbc包

2、新建数据库test并建立表student2

Jdbc

public class TestJDBC4 {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        //注册驱动

        Class.forName("com.mysql.jdbc.Driver");

        //定义连接参数

        String url="jdbc:mysql://localhost:3306/java2302?"+

                "userSSl=true&useUnicode=true&characterEncoding=utf8";

        String usernanme="root";

        String password="root";

        //获取连接

        Connection connection= DriverManager.getConnection(url,usernanme,password);





        Statement statement=connection.createStatement();

        //执行sql,接收输入的登录参数,用户的登录用户名和密码

        System.out.println("请输入登录用户名");

        String name=new Scanner(System.in).nextLine();

        System.out.println("请输入登录密码");

        String pwd=new Scanner(System.in).nextLine();



        //定义sql

        /*

         * sql注入,开发过程中一些不规范导致出现安全风险

         * */

        String sql="select  * from user where name = ? and password= ?";

        //获得安全传输器

        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        //将sql里面的参数信息填充到sql语句里

        preparedStatement.setObject(1,name);

        preparedStatement.setObject(2,pwd);//在拼接的时候会字段在两边添加引号‘’





        //执行查询操作

        //打印sql语句观察是否有问题

        System.out.println(sql);

        ResultSet resultSet= preparedStatement.executeQuery();



        //判断是否能登录成功

        if (resultSet.next()){

            System.out.println("登录成功");

        }else{

            System.out.println("登录失败");

        }

        //关闭资源

        resultSet.close();

        preparedStatement.close();

        connection.close();

    }

  1. web.xml中配置Servlet

        

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--此处配置servlet资源-->

    <servlet>
        <!--servlet名称-->
        <servlet-name>helloServlet</servlet-name>
        <!--配置servlet全路径-->
        <servlet-class>com.BlackTea.servlet.HelloServlet</servlet-class>
    </servlet>

    <!--servlet 映射信息-->
    <servlet-mapping>

        <servlet-name>helloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>MyServlet1</servlet-name>
        <servlet-class>com.BlackTea.servlet.MyServlet1</servlet-class>
    </servlet>
    <servlet-mapping>

        <servlet-name>MyServlet1</servlet-name>
        <url-pattern>/myservlet1</url-pattern>
    </servlet-mapping>

    <!--配置servlet2-->
    <servlet>
        <servlet-name>MyServlet2</servlet-name>
        <servlet-class>com.BlackTea.servlet.MyServlet2</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet2</servlet-name>
        <url-pattern>/myservlet2</url-pattern>
    </servlet-mapping>

    <!--配置servlet3-->
    <servlet>
        <servlet-name>MyServlet3</servlet-name>
        <servlet-class>com.BlackTea.servlet.MyServlet3</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet3</servlet-name>
        <url-pattern>/myservlet3</url-pattern>
    </servlet-mapping>
    <!--配置servlet4-->
    <servlet>
        <servlet-name>MyServlet4</servlet-name>
        <servlet-class>com.BlackTea.servlet.MyServlet4</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet4</servlet-name>
        <url-pattern>/myservlet4</url-pattern>
    </servlet-mapping>
    <!--配置servlet5-->
    <servlet>
        <servlet-name>MyServlet5</servlet-name>
        <servlet-class>com.BlackTea.servlet.MyServlet5</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet5</servlet-name>
        <url-pattern>/myservlet5</url-pattern>
    </servlet-mapping>

</web-app>

  1. 创建index.jsp页面

<%--

  Created by IntelliJ IDEA.

  User: 黑猹

  Date: 2023/4/6

  Time: 20:49

  To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

  <head>

    <title>$Title$</title>

  </head>

  <body>

  <%-- 首页信息--%>

  <h1>测试servlet</h1> <br>

  <a href="hello">测试helloServlet</a> <br>

  <a href="myservlet1">测试MyServlet1</a> <br>



  <%--测试get请求和post请求--%>

  <a href="myservlet2">测试MyServlet2</a> <br>

  <form action="myservlet2" method="post">

    用户名称:<input type="text" name="username">

    用户密码:<input type="password" name="password">

    <input type="submit" value="登录">

  </form>

<%--测试请求的相关参数--%>

  <a href="myservlet3">测试myservlet3</a> <br>



  <%--测试响应的信息--%>

  <a href="myservlet4">测试myservlet4</a> <br>



  <form action="myservlet4" method="post">

    用户名称:<input type="text" name="username">

    用户密码:<input type="password" name="password">

    <input type="submit" value="测试重定向">

  </form>



  <%--测试会话技术--%>

  <a href="myservlet5">测试myservlet5</a> <br>

  <%--form表单测试session会话域--%>

  <form action="myservlet5" method="post">

    用户名称:<input type="text" name="username">

    用户密码:<input type="password" name="password">

    <input type="submit" value="测试Session">

  </form>

  </body>

</html>

 

  1. 创建web.jsp页面
--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>系统首页</title>

</head>

<body>

<h1>您已进入系统首页</h1>

<%--通过el表达式,将后台分装传递的信息显示出来--%>

<h2>${msg}</h2>

</body>

</html>

  1. 创建过滤器 CharacterFilter 解决中文乱码问题
       import javax.servlet.*;

       import javax.servlet.http.HttpServletRequest;

       import javax.servlet.http.HttpServletRequestWrapper;

       import javax.servlet.http.HttpServletResponse;

       import java.io.IOException;

       import java.io.UnsupportedEncodingException;

            public class CharacterFilter implements Filter {  

       public void init(FilterConfig filterConfig) throws ServletException {

               }  

       public void doFilter(ServletRequest req, ServletResponse resp,  

 FilterChain chain) throws IOException, ServletException {

        1           HttpServletRequest request = (HttpServletRequest) req;

                  HttpServletResponse response = (HttpServletResponse) resp;

                 // 拦截所有的请求 解决全站中文乱码  

                   // 指定 request 和 response 的编码  

                   request.setCharacterEncoding("utf-8"); // 只对消息体有效  

                   response.setContentType("text/html;charset=utf-8");

                   // 在放行时 应该给目标资源一个request对象 让目标资源调用  

                   // getParameter时调到我们写的getParameter  

                   // 对request进行包装  

                    CharacterRequest characterRequest = new CharacterRequest(request);

                   //放行  

                   chain.doFilter(characterRequest, response);

               }  

.       public void destroy() {

               }  

    }  

    // 针对 request 对象进行包装  

            // 继承 默认包装类HttpServletRequestWrapper  

           class CharacterRequest extends HttpServletRequestWrapper {  

      public CharacterRequest(HttpServletRequest request) {

                   super(request);

               }  

.       // 子类继承父类一定会覆写一些方法,此处用于重写getParamter()方法  

               public String getParameter(String name) {

                    // 调用 被包装对象的getParameter()方法 获得请求参数  

                   String value = super.getParameter(name);

                   if (value == null)

                            return null;

                  // 判断请求方式  

                   String method = super.getMethod();

                   if ("get".equalsIgnoreCase(method)) {

                         try {

                                  value = new String(value.getBytes("iso-8859-1"), "utf-8");

                                } catch (UnsupportedEncodingException e) {

                                   throw new RuntimeException(e);

                              }

                       }

                   // 解决乱码后返回结果  

                   return value;

               }  
 
  1. 用户登录
package com.BlackTea.servlet;



import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.PrintWriter;



/**

 * @Author: Yeman

 * @Date: 2023-04-13-20:10

 * @Description:测试响应相关操作

 */

public class MyServlet4 extends HttpServlet {

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //设置响应头,防止中文乱码

        resp.setHeader("Content-Type","text/html;charset=UTF-8");



        //测试,前端发起servlet4请求,响应一串字符串

        PrintWriter writer =resp.getWriter();

        writer.write("你好servlet响应对象");

        writer.close();

    }



    @Override

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //配置重定向信息

        //进行重定向到success界面

        resp.sendRedirect("/success.jsp");

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值