Servlet和JSP的学习记录

软件的结构

  C/S (Client - Server 客户端-服务器端)

  特点:

  1)必须下载特定的客户端程序。

  2)服务器端升级,客户端升级。

  B/S (Broswer -Server 浏览器端- 服务器端)

  特点:

  1)不需要安装特定的客户端(只需要安装浏览器即可)

  2)服务器端升级,浏览器不需要升级

  总结:需要安装客户端的是C/S结构,通过浏览器可以直接打开的是B/S结构

javaweb的程序就是B/S软件结构。

工具:IDEA,Tomcat

Servlet

Servlet就是不同的用户拼接动态网页的组件。

Servlet运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用来处理客户端的请求、响应动态资源给浏览器的。

JSP

  Servlet的作用: 用java语言开发动态资源的技术
  JSP的作用:用java语言(+html语言)开发动态资源的技术
  JSP就是servlet
JSP模板:JSP页面中的html代码就是JSP的模板
JSP的脚本:(脚本就是一段代码)
  语法:<%java代码 %>
  作用: 执行java代码
JSP表达式:
  语法:<%=变量或表达式%>
  作用: 向浏览器输出变量的值或表达式计算的结果

项目建立

1.new project

 

 

 

创建成功后添加框架支持 

 

 

 

 

 

 

 

 

 

 

 实例

package com.test.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/hello")//当跳转到./hello的时候自动运行下列代码
public class hello extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello.service");
    }
}

 

 

 运行成功自动弹出浏览器打开web软件包中的index.jsp

下面拿我之前的JDBC连接数据库配合servlet将数据库的表打印在浏览器页面上

 Hello.java

package com.zhp.web;

import javax.servlet.Servlet;
import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;

@WebServlet("/hello")
public class Hello extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Hello.service");
        ResultSet resultSet = null;
        PreparedStatement statement = null;
        Connection connection = null;
        ArrayList<Student> list = null;
        try {
            connection = JDBCUtil.getConnection();
            String sql = "select id,name,age,gender from student";
            statement = connection.prepareStatement(sql);
            resultSet = statement.executeQuery();
            list = new ArrayList<>();
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                String gender = resultSet.getString("gender");
                Student student = new Student(id, name, age, gender);
                list.add(student);
            }
            for (Student student : list) {
                System.out.println(student);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.close(connection, statement, resultSet);
        }
        req.setAttribute("list", list);
        req.getRequestDispatcher("/Student_list.jsp").forward(req, resp);
    }
}

Student.java

package com.zhp.web;

public class Student {
    private int id;
    private String name;
    private int age;
    private String gender;

    public Student(int id, String name, int age, String gender) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }

    public Student() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

JDBCUtil.java

package com.zhp.web;

import java.sql.*;

public class JDBCUtil {

    private JDBCUtil() {
    }

    //静态代码块,只执行一次,保证驱动只加载一次
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        //Class.forName("com.mysql.jdbc.Driver");//每次调用都要加载驱动,很浪费,卸载静态代码块中只加载一次即可
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=UTF-8", "root", "");
        return connection;
    }

    public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
        if (resultSet != null)
            try {
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        if (preparedStatement != null)
            try {
                preparedStatement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        if (connection != null)
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
    }
}

Student_list.jsp

<%@ page import="java.util.List" %>
<%@ page import="com.zhp.web.Student" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: zhp10
  Date: 2021/8/10
  Time: 16:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <style type="text/css">
        div{
            width: 500px;
            margin: 0 auto;
        }
    </style>
    <title>Title</title>
</head>
<body>
    <div>
<%--        ${list}--%>
        <table border="1" cellspacing="0">
            <tr>
                <td>ID</td>
                <td>名字</td>
                <td>年龄</td>
                <td>性别</td>
            </tr>
            <%
                // 在这里面可以写java代码
                ArrayList<Student> list = (ArrayList<Student>) request.getAttribute("list");
                for (Student student : list) {
            %>
            <tr>
                <td><%=student.getId()%></td>
                <td><%=student.getName()%></td>
                <td><%=student.getAge()%></td>
                <td><%=student.getGender()%></td>
            </tr>
            <%
                }
            %>

        </table>
    </div>
<%--    ${list}--%>
</body>
</html>

通过访问./hello运行servlet的service将表的数据写入jsp打印到浏览器页面中;

 

 打印成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值