首页 > 编程语言 >在集成开发环境当中开发Servlet程序

在集成开发环境当中开发Servlet程序

时间:2022-10-16 17:45:53浏览次数:45  
标签:集成 String getString resultSet IDEA 开发 student Servlet

在集成开发环境当中开发Servlet程序

集成开发工具很多,其中目前使用比较多的是:

IntelliJ IDEA(这个居多,IDEA在提示功能方面要强于Eclipse,也就是说IDEA使用起来比Eclipse更加智能,更好用。JetBrain公司开发的。收费的。)
Eclipse(这个少一些),Eclipse目前还是有团队使用,只不过处于减少的趋势,自己从事工作之后,可能会遇到。Eclipse是IBM团队开发的。Eclipse寓意是“日食”。“日食”表示将太阳吃掉。太阳是SUN。IBM团队开发Eclipse的寓意是吞并SUN公司,但是2009年的时候SUN公司被Oracle公司并购了。IBM并没有成功并购SUN公司。

使用IDEA集成开发工具开发Servlet

  • 第一步:New Project(我比较习惯先创建一个Empty Project【空工程】,然后在空工程下新建Module【模块】,这不是必须的,只是一种习惯,你可以直接新建非空的Project),这个Empty Project起名为:javaweb(不是必须的,只是一个名字而已。一般情况下新建的Project的名字最好和目录的名字一致。)

  • 第二步:新建模块(File --> new --> Module…)

    这里新建的是一个普通的JavaSE模块(这里先不要新建Java Enterprise模块)

    这个Module自动会被放在javaweb的project下面。

    这个Module起名:servlet01

  • 第三步:让Module变成JavaEE的模块。(让Module变成webapp的模块。符合webapp规范。符合Servlet规范的Module)

    在Module上点击右键:Add Framework Support…(添加框架支持)

    在弹出的窗口中,选择Web Application(选择的是webapp的支持)

    选择了这个webapp的支持之后,IDEA会自动给你生成一个符合Servlet规范的webpp目录结构。

  • 重点,需要注意的:在IDEA工具中根据Web Application模板生成的目录中有一个web目录,这个目录就代表webapp的根

  • 第四步(非必须):根据Web Application生成的资源中有index.jsp文件,这里我选择删除这个index.jsp文件。

  • 第五步:编写Servlet(StudentServlet)

    class StudentServlet implements Servlet

    这个时候发现Servlet.class文件没有。怎么办?将CATALINA_HOME/lib/servlet-api.jar和jsp-api.jar添加到classpath当中(这里的classpath说的是IDEA的classpath)

    File --> Project Structrue --> Modules --> + 加号 --> Add JARS…

    实现jakarta.servlet.Servlet接口中的5个方法。

  • 第六步:在Servlet当中的service方法中编写业务代码(我们这里连接数据库了。)

  • 第七步:在WEB-INF目录下新建了一个子目录:lib(这个目录名可不能随意,必须是全部小写的lib),并且将连接数据库的驱动jar包放到lib目录下。

  • 第八步:在web.xml文件中完成StudentServlet类的注册。(请求路径和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-name>studentServlet</servlet-name>
            <servlet-class>com.bjpowernode.javaweb.servlet.StudentServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>studentServlet</servlet-name>
            <url-pattern>/servlet/student</url-pattern>
        </servlet-mapping>
        
    </web-app>
    
  • 第九步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat执行后台的StudentServlet。

    student.html

    这个文件不能放到WEB-INF目录里面,只能放到WEB-INF目录外面。

    student.html文件的内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>student page</title>
    </head>
    <body>
        <!--这里的项目名是 /xmm ,无法动态获取,先写死-->
        <a href="/xmm/servlet/student">student list</a>
    </body>
    </html>
    

    第十步:让IDEA工具去关联Tomcat服务器。关联的过程当中将webapp部署到Tomcat服务器当中。

    • IDEA工具右上角,绿色小锤子右边有一个:Add Configuration

    • 左上角加号,点击Tomcat Server --> local

    • 在弹出的界面中设置服务器Server的参数(基本上不用动)

    • 在当前窗口中有一个Deployment(点击这个用来部署webapp),继续点击加号,部署即可。

    • 修改 Application context为:/xmm

      第十一步:启动Tomcat服务器

    • 在右上角有绿色的箭头,或者绿色的小虫子,点击这个绿色的小虫子,可以采用debug的模式启动Tomcat服务器。

    • 我们开发中建议适用debug模式启动Tomcat

    • 第十二步:打开浏览器,在浏览器地址栏上输入:http://localhost:8080/xmm/student.html

    目录结构如下:

student.html文件中如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student page</title>
</head>
<body>
    <a href="/xmm/servlet/student"> student list</a>
</body>
</html>

web.xml中文件如下:

<?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-name>studentServlet</servlet-name>
        <servlet-class>com.bcht.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>studentServlet</servlet-name>
        <url-pattern>/servlet/student</url-pattern>
    </servlet-mapping>

</web-app>

TestServlet中文件夹中的内容如下:

package com.bcht;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

public class TestServlet implements Servlet{
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {

        //设置响应的内容类型
        response.setContentType("test/html");
        PrintWriter out = response.getWriter();

        //读取mysql的数据库返回信息到页面上
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet =null;
        //1.加载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //2.用户信息和url
            String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=false";
            String username="root";
            String password="123456";
            //3.连接成功,数据库对象 Connection
            connection = DriverManager.getConnection(url,username,password);

            System.out.println(connection);

            //4.执行SQL对象Statement,执行SQL的对象
            statement = connection.createStatement();
            //5.执行SQL的对象去执行SQL,返回结果集
            String sql = "SELECT * FROM student;";
            resultSet = statement.executeQuery(sql);
            while(resultSet.next()){
                String studentno = resultSet.getString("studentno");
                String loginpwd = resultSet.getString("loginpwd");
                String studentname = resultSet.getString("studentname");
                String sex = resultSet.getString("sex");
                String gradeid = resultSet.getString("gradeid");
                String phone = resultSet.getString("phone");
                String address = resultSet.getString("address");
                String borndate = resultSet.getString("borndate");
                String email = resultSet.getString("email");
                String identitycard = resultSet.getString("identitycard");
                System.out.println(studentno+","+loginpwd+","+studentname+","+sex+","+gradeid+","+phone+","+address+","+borndate+","+email+","+identitycard);
                out.print(studentno+","+loginpwd+","+studentname+","+sex+","+gradeid+","+phone+","+address+","+borndate+","+email+","+identitycard);
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
//
//        6.释放连接
        if(resultSet != null){
            try {
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if(statement != null){
            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(connection != null){
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }

        }
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

标签:集成,String,getString,resultSet,IDEA,开发,student,Servlet
From: https://www.cnblogs.com/atao-BigData/p/16796638.html

相关文章

  • 外设驱动库开发笔记47:ADS111x系列ADC驱动
      关于ADC我们已经讨论过不少了,但在不同的应用需求下,我们会选择不同的原件。在这里我们将讨论ADS111x系列ADC驱动的设计与实现。1、功能概述  ADS1113、ADS1114和......
  • 实验一 C语言开发环境使用和编程初体验
    //实验一#include<stdio.h>intmain(){printf("OO\n");printf("<H><H>\n");printf("IIII\n");return0;}//task1_1.c#include<......
  • 持续集成
    持续集成的工作流程1.开发人员在本地工作空间提交代码到代码仓库;2.版本控制系统通过WebHook等机制实时通知持续集成服务器;3.持续集成服务器克隆最新的代码和构建脚本到服......
  • 实验1 C语言开发环境使用和编程初体验
    #include<stdio.h>intmain(){printf("OO\n");printf("<H><H>\n");printf("IIII\n");return0;}#include<stdio.h>#include<mat......
  • 斗地主游戏的案例开发
    packagecom.itheima._08斗地主游戏洗牌发牌看牌;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importj......
  • 驱动开发:内核枚举DpcTimer定时器
    在笔者上一篇文章《驱动开发:内核枚举IoTimer定时器》中我们通过IoInitializeTimer这个API函数为跳板,向下扫描特征码获取到了IopTimerQueueHead也就是IO定时器的队列头,本章......
  • Typescript助力项目开发:JS切换TS、TS类型定制与思考
    TS已经成为可以帮助项目顺利开发的存在了。在上半年笔者就被要求采用TS开发新的项目,并在一些老项目中用TS去改造(因为沟通原因我以为某个远程组件只有TS版本)。在其中也有了一......
  • Qt开发经验小技巧251-255
    今天在一个头文件中,发现#ifdefQ_OS_WIN#ifdefQ_CC_MSVC之类的都失效了,搞得差点怀疑人生了。经历过之前类似的教训后,排查原来是没有提前引入qglobal.h头文件导致的。......
  • DispatcherServlet辅助类
     /**作者:呆萌老师*☑csdn认证讲师*☑51cto高级讲师*☑腾讯课堂认证讲师*☑网易云课堂认证讲师*☑华为开发者学堂认证讲师*☑爱奇艺千人名师计划成员*在这里给大......
  • solidity智能合约开发环境搭建踩坑
    在线IDE:https://remix.ethereum.org/。文件会存储在浏览器缓存中,清除浏览器缓存文件会丢失。官方github提供remix-ide的项目源码,跟在线IDE没有区别,文件同样保存在浏览器......