念念不忘,必有回响

Web - JSP开发环境搭建 - Mac

IDEA项目创建

创建项目时记得选择Web Application模版。
image.png

Tomcat安装

brew install tomcat

image.png

Tomcat配置

添加项目启动配置。
image.png

加入刚才用brew安装的Tomcat安装目录。

/usr/local/Cellar/tomcat/9.0.33/libexec

image.png

添加默认的启动root。
image.png

运行web服务

image.png
image.png
可以看到,我们的web服务跑起来了。

让我们跑一个hello world。

Hello World!<br/>
<%
out.println("你的 IP 地址 " + request.getRemoteAddr());
%>

image.png

OK了,配置一下热更新吧:
image.png

虽然这样方便,不用按键了,但不是推荐的省电方案哦(

解决语法高亮

假如界面上jsp代码没有高亮。
image.png

打开项目结构。
image.png

添加项目依赖。
image.png

添加Tomcat的jar包。

image.png

问题解决。
image.png

Mysql安装

brew install mysql

image.png

运行并测试一下mysql的安装,这里不设密码了,反正只自己连接。
image.png

Mysql连接库下载

下载地址:https://dev.mysql.com/downloads/connector/j/

选择平台无关版本。
image.png
选择直接下载。
image.png

下载好后解压到WEB-INF到lib下面:
image.png

设置lib文件为项目lib。
image.png

测试数据

创建一下测试数据库。

CREATE DATABASE RUNNOOB;
USE RUNNOOB;
CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
  `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

image.png

插入一些数据。

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鸟教程', 'http://www.runoob.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

image.png

JDBC测试

新建一个sql_test.java:

import java.sql.*;

public class sql_test {
    // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
//    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
//    static final String DB_URL = "jdbc:mysql://localhost:3306/RUNNOOB";

    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/RUNNOOB?useSSL=false&serverTimezone=UTC";


    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);

            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // 执行查询
            System.out.println(" 实例化Statement对象...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);

            // 展开结果集数据库
            while (rs.next()) {
                // 通过字段检索
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");

                // 输出数据
                System.out.print("ID: " + id);
                System.out.print(", 站点名称: " + name);
                System.out.print(", 站点 URL: " + url);
                System.out.print("\n");
            }
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 处理 JDBC 错误
            se.printStackTrace();
        } catch (Exception e) {
            // 处理 Class.forName 错误
            e.printStackTrace();
        } finally {
            // 关闭资源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}

输出结果,显示JDBC安装正常。

连接数据库...
 实例化Statement对象...
ID: 1, 站点名称: Google, 站点 URL: https://www.google.cm/
ID: 2, 站点名称: 淘宝, 站点 URL: https://www.taobao.com/
ID: 3, 站点名称: 菜鸟教程, 站点 URL: http://www.runoob.com
ID: 4, 站点名称: 微博, 站点 URL: http://weibo.com/
ID: 5, 站点名称: Facebook, 站点 URL: https://www.facebook.com/
Goodbye!

JSTL标准标签库下载

下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

找一个最新的下载。
image.png

将lib里的两个jar拷贝到Tomcat的lib目录。
image.png

连接库配置

回到IDEA,和Tomcat一样的地方,添加整个lib文件夹为依赖。
image.png

测试JSP连接数据库

测试的jsp文件:

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<html>
<head>
    <title>SELECT 操作</title>
</head>
<body>
<!--
JDBC 驱动名及数据库 URL
数据库的用户名与密码,需要根据自己的设置
useUnicode=true&characterEncoding=utf-8 防止中文乱码
 -->
<sql:setDataSource var="snapshot" driver="com.mysql.cj.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/RUNNOOB?useUnicode=true&characterEncoding=utf-8"
                   user="root"  password=""/>

<sql:query dataSource="${snapshot}" var="result">
    SELECT * from websites;
</sql:query>
<h1>JSP 数据库实例 - 菜鸟教程</h1>
<table border="1" width="100%">
    <tr>
        <th>ID</th>
        <th>站点名</th>
        <th>站点地址</th>
    </tr>
    <c:forEach var="row" items="${result.rows}">
        <tr>
            <td><c:out value="${row.id}"/></td>
            <td><c:out value="${row.name}"/></td>
            <td><c:out value="${row.url}"/></td>
        </tr>
    </c:forEach>
</table>

</body>
</html>

运行结果:
image.png

posted on 2020-03-31 17:06  licsber  阅读(623)  评论(0编辑  收藏  举报