FOE电影购票APP之服务器搭建
我们接着上次的学习,现在,我们数据库搭建成功了,那我们怎样才能让客户端通过服务器访问我们数据库呢?这里要说的是关于Servlet。我们来看看上次博客同样出现过的图。
Servlet 是 sun 公司提供的一门用于开发动态 web 资源的技术。其实,”Servlet”本来是指 Java语言实现的一个接口(狭义的Servlet),但更多的也更普遍的情况是:我们把任何实现了 Servlet 接口的类都叫作 “Servlet”。Servlet 的作用主要是对 Request 的请求数据进行解析、按照业务逻辑处理并将结果封装成 Response 返回。这里我就不作过多的解释,我们直接来实操,这样会更加方便读者理解。
这里要提一下的是,读者必须自己安装好Eclipse Java EE 和 TomCat,这两个都比较容易安装。
我们首先通过Eclipse Java EE新建一个Dynamic Web Project。
然后我们一直默认按next,直到下图。
然后按Finish就完成了项目的构建。对项目结构不理解的读者,不用着急,我们会在以后的学习中尽量谈到。
我们先新建一个Servlet。
这里的Src文件夹就是我们放服务器的java文件所在的文件夹,很容易理解吧 。
然后我们先直接按finish 。
这时候我们会发现我们新建的java文件居然一大堆错误,整个编辑器被红色覆盖。别怕,这是因为我们没有让Servlet在我们搭建的服务器环境下导致的。我们在 Project Explorer 空白区域 > 右键 > New > Other > 选择Server:
然后选择我们自己安装的Tomcat版本, NEXT > 设置 Tomcat 安装路径(JRE可以workspace默认的JRE,也可以选择一个特定的JRE,如JRE1.7),之后 finish完成:
刚刚创建的工程”右键” > 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类,我们在这里完成客户端传来的数据进行处理,并且返回处理后的信息。下图可以很好帮大家理解这个过程:
然后,我们复制下列代码到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则会显示:
同样剧透一下往后的学习,我们就介绍本次的博客。
好了,这次学习就到这里,感谢各位读者。