电影购票APP实现(2)-Servlet

FOE电影购票APP之服务器搭建


  我们接着上次的学习,现在,我们数据库搭建成功了,那我们怎样才能让客户端通过服务器访问我们数据库呢?这里要说的是关于Servlet。我们来看看上次博客同样出现过的图。

Servlet

  Servlet 是 sun 公司提供的一门用于开发动态 web 资源的技术。其实,”Servlet”本来是指 Java语言实现的一个接口(狭义的Servlet),但更多的也更普遍的情况是:我们把任何实现了 Servlet 接口的类都叫作 “Servlet”。Servlet 的作用主要是对 Request 的请求数据进行解析、按照业务逻辑处理并将结果封装成 Response 返回。这里我就不作过多的解释,我们直接来实操,这样会更加方便读者理解。

  这里要提一下的是,读者必须自己安装好Eclipse Java EE 和 TomCat,这两个都比较容易安装。

  我们首先通过Eclipse Java EE新建一个Dynamic Web Project。

  新建项目

  然后我们一直默认按next,直到下图。

  webXML  

  然后按Finish就完成了项目的构建。对项目结构不理解的读者,不用着急,我们会在以后的学习中尽量谈到。

  我们先新建一个Servlet。

  新建Servlet

  这里的Src文件夹就是我们放服务器的java文件所在的文件夹,很容易理解吧 。

  Create Servelt

  然后我们先直接按finish 。

  这时候我们会发现我们新建的java文件居然一大堆错误,整个编辑器被红色覆盖。别怕,这是因为我们没有让Servlet在我们搭建的服务器环境下导致的。我们在 Project Explorer 空白区域 > 右键 > New > Other > 选择Server:

  11.jpg

   然后选择我们自己安装的Tomcat版本, NEXT > 设置 Tomcat 安装路径(JRE可以workspace默认的JRE,也可以选择一个特定的JRE,如JRE1.7),之后 finish完成:

   tomcat

  刚刚创建的工程”右键” > properties > Targeted Runtimes,勾选刚创建好的Server,OK,看看工程,红色就都没有了。

   配置环境真的好累啊,现在我们可以尝试着写代码了。为了能够和mySQL数据库交互,我们先Src下的Servlet,新建一个Java类DBUtil。然后复制如下代码

package servlet;

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

import com.mysql.jdbc.Connection;

public class DBUtil {
    public static final String TABLE_USERINFO = "user_info";//数据库中的一个表名
    public static final String TABLE_FILMLIST = "film_list";

    public static Connection getConnect() {
        String url = "jdbc:mysql://localhost:3306/foe_ticket?useUnicode=true&characterEncoding=utf-8&userSSL=false";//连接数据库
        Connection connector = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connector = (Connection)DriverManager.getConnection(url, "root", "5201314");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.print("SQLExeption: " + e.getMessage());
            System.out.print("SQLState: " + e.getSQLState());
            System.out.print("VendorError: " + e.getErrorCode());
        }
        return connector;
    }
}

   然后回到我们一开始创建Login类,这是一个Servlet类,我们在这里完成客户端传来的数据进行处理,并且返回处理后的信息。下图可以很好帮大家理解这个过程:

Servlet过程

  然后,我们复制下列代码到Login类

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;

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 com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

/**
 * Servlet implementation class Login
 */
@WebServlet(description = "Login", urlPatterns = {"/Login"})
public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Login() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        String code = "";
        String message = "";

        String username = request.getParameter("Username");
        String password = request.getParameter("Password");

        Connection connection = DBUtil.getConnect();
        try {
            Statement statement = (Statement)connection.createStatement();
            String sql = "select username from " + DBUtil.TABLE_USERINFO + " where username = '" + username + "' and password = '" + password + "'";
            ResultSet result = statement.executeQuery(sql);
            if (result.next()) {
                code = "200";
                message = "登录成功";
            } else {
                code = "201";
                message = "登陆失败,密码错误或账号未注册";
            } 
        } catch (SQLException e) {
            e.printStackTrace();
        }

        HashMap<String, String> map = new HashMap<>();
        map.put("resCode", code);
        map.put("resMsg", message);

        PrintWriter pw = response.getWriter();
        pw.println(map.toString());
        pw.flush();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

   我们先看看user_info中的内容:

  数据库

   所以我们点击运行项目,然后键入如下URL则会显示:

   登录成功

   同样剧透一下往后的学习,我们就介绍本次的博客。

登录

   好了,这次学习就到这里,感谢各位读者。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值