如何创建并部署一个servlet

最近开始接触后端服务器,学习了如何创建servlet,在此记下备用。
注:本文将会介绍如何在IntelliJ IDEA上创建一个servlet,并部署到tomcat服务器。
注:本文仅供非后端人员应急使用,生产环境请进行系统的学习。

新建项目

启动IntelliJ IDEA后选择new - Project ,然后选择JAVA EE下的Web Application
在这里插入图片描述
输入项目名称,完成项目创建。

添加依赖

添加servlet依赖的tomcat的JAR包,在file-Project Structure中,选择Libraries , 然后点击绿色的加号,选择java,选择tomcat/lib/servlet-api.jar,跳过这一步在新建servlet时可能会导致缺少必要的文件。

在这里插入图片描述

创建数据库的操作类

本文创建的servlet用于提供接口操作数据库,首先需要创建数据库的操作类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

//用于获得数据库的连接的类
class DBUtil {
	//数据库地址:端口号/数据库名字
   private static final String URL = "jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=utf-8";
   //登陆数据库的账户名
   private static final String USER = "usr";
   //登陆数据库的密码
   private static final String PASSWORD = "password";
   private static Connection conn = null;

   static void prepare(){
       try {
           //1.加载驱动程序
           Class.forName("com.mysql.jdbc.Driver");
           //2.获得数据库的连接
           conn = DriverManager.getConnection(URL, USER, PASSWORD);
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       } catch (SQLException e) {
           e.printStackTrace();
       }
   }

   //将获得的数据库与java的链接返回(返回的类型为Connection)
    static Connection getConnection() {
        prepare();
       return conn;
   }
}

【注意】加载驱动类Class.forName("com.mysql.jdbc.Driver")需要导入jar包,我使用的版本是mysql-connector-java-5.1.46.jar

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//封装执行SQL语句的类,这里只写一个插入语句当作栗子
class DateBaseHelper {

    static Map<String, Object> insertData(String sql) {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        Map<String, Object> resultMap = new HashMap<>();
        try {
            conn = DBUtil.getConnection();
            st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.execute();
            resultMap.put("errorCode", "0");
            return resultMap;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            resultMap.put("errorCode", "-1");
            resultMap.put("message", e.getMessage());
            return resultMap;
        } finally {
            try {
                if (st != null) {
                    st.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }

        }
    }

创建servlet

在项目中右键src,选择New - Servlet,输入名称完成创建。
默认名称命名的Servler大概长这个样子:
在这里插入图片描述

doPost用来处理post请求,doGet处理get请求。
添加逻辑,处理get请求,接受userName参数,并写入数据库。

import com.alibaba.fastjson.JSON;

import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.Map;

@WebServlet(value = "/LogOn")
public class Servlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        response.setContentType("text/html; charset=utf-8");//如果出现输出中文乱码需添加这一行
        PrintWriter out = response.getWriter();
        String userName = URLDecoder.decode(request.getParameter("userName")==null?"":request.getParameter("userName"), "UTF-8");
        Map<String,Object> resultMap;
        String res;
        if (!"".equalsIgnoreCase(userName)){
            resultMap = DateBaseHelper.insertData("insert into user(user_name)  values('"+userName+"');");
            res= JSON.toJSONString(resultMap);

        }else{
            res="无效的用户名";
        }
        out.print(res);
    }
}

【注意】要想正常访问Servlet有两种方式:
I.在web.xml中配置映射【参考文章】
II.Servlet3.0以上版本,在Servlet类上使用@WebServlet注解进行配置【参考文章】

@WebServlet(value = "/LogOn")该注解的作用等价于在web.xml中配置的该servlet的元素中的配置,简单的说就是虽然文件名是servet.java,部署到服务器上以后,我只要访问括号里面的名字就能访问到这个servlet了。

编译打包

选择Build - Build Artifacts… , 弹出的action选择build ,等待 IntelliJ IDEA 编译完成。
在这里插入图片描述
在项目的out - artifacts 下会生成项目名_war_exploded 的目录,部署到服务器时就会用到这个目录。

部署到服务器

请参考我的另一篇博客,这里就不重复说明了
VII 部署servlet到tomcat

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值