Mac上使用intelliJ开发WEbServer(Servlet)、mysql的新手教程

基础概念

什么是Servlet

1
Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。

什么是JSP

1
JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。

IntelliJ开发WebServer

Demo源码github地址

https://github.com/blackteachinese/servletDemo

搭建Webserver工程环境

  • 创建一个Maven Demo工程

  • 项目名称右键,选择”Add Framework Support”

  • 添加Web Application

  • 添加完后可以看到WebServer的目录

  • 配置Artifact打包部署设置

  • 配置Tomcat服务器

  • Maven依赖配置

开发一个Get请求接口

  • 创建一个formGetApi.html,做为表单承载页
  • 在Index.jsp配置跳转到formGetApi.html页面
  • 创建一个继承于HttpServlet的Java类GetApiTest
    • 你会发现HttpServlet找不到。不用急,选中“HttpServlet”按“option”+”enter”,点击添加Maven依赖,导入HttpServlet的依赖即可。

  • 重载HttpServlet的“service”方法。通过“getParameter”和“getParameterValues”获取表单的字段,并将获取到的结果输出回浏览器。
  • web.xml里配置api的映射

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?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_3_1.xsd"
    version="3.1">
    <servlet>
    <servlet-name>GetApiServlet</servlet-name>
    <servlet-class>GetApiTest</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>GetApiServlet</servlet-name>
    <url-pattern>/getApi</url-pattern>
    </servlet-mapping>
    </web-app>
  • 启动Tomcat

    开发一个Post请求接口

  • 创建一个formPostApi.html。唯一的不同是对”method”的设置。
  • 创建一个继承于HttpServlet的Java类PostApiTest。
    • post请求需要先对request、response对象设置CharacterEncoding
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
      // right to read chinese
      req.setCharacterEncoding("utf-8");
      // right to output chinese
      resp.setContentType("text/html;charset=utf-8");
      PrintWriter out = resp.getWriter();
      // get name value
      String name = req.getParameter("name");
      out.println("<h1>Hello,"+name+"</h1>");
      // get info value
      String[] infos = req.getParameterValues("info");
      if (infos != null) {
      out.print("<h1>info :</h1>");
      for (String contact :infos) {
      out.print("<h1>"+contact+"</h1>");
      }
      }
      }

使用mysql储存提交的表单数据

  • 创建一个formMysqlApi.html页面
  • web.xml映射配置
  • 创建一个继承于HttpServlet的Java类MysqlApiTest。

    mql操作

IntelliJ添加一个Datasource


mysql命令行创建一个DataBase

IntelliJ创建一个createDB.sql文件,创建userInfo表

mysql命令行设置userInfo表character为UTF8

IntelliJ创建一个insertDB.sql文件,插入一条数据

动态加载mysql驱动

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

JDBC连接MySQL

1
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/webserverDemo?user=root&password=19880622");

环境介绍

IntelliJ环境搭建

mysql环境搭建

常用mysql命令

  • 连接mysql:
    • 格式: mysql -h主机地址 -u用户名 -p用户密码
    • example:mysql -uroot -p
  • 退出MYSQL命令
    • 格式:exit (回车)
  • 创建数据库
    • 命令:create databas <数据库名>;
  • 显示数据库
    • 命令:show databases;
  • 连接数据库
    • 命令: use <数据库名>
  • 创建数据库表
    • 命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
  • 删除表
    • 命令:drop table <表名>
  • 插入表数据
    • 命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
  • 查看表中所有数据
    • 命令: select <字段1,字段2,…> from < 表名 > where < 表达式 >
    • example:select * from MyClass;

MySQL的JDBC URL格式

1
jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][&param2=value2]….

Example:

1
jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password

Blacktea wechat
ex. subscribe to my blog by scanning my public wechat account
记录生活于感悟,您的支持将鼓励我继续创作!