Javaweb前后台交互(JDBC+JSP+Servlet+MySQL)

最简单的前后台交互,不涉及MVC架构,因此也就不分dao、service、pojo,

默认知道什么是Jsp、mysql、servlet、Tomcat服务器。

(https://blog.csdn.net/blackplus28/article/details/80603863)

一、搭建环境

二、导入jar包(mysql,servlet)

(https://blog.csdn.net/superinzaghi747/article/details/80539095)

1.直接复制:(不推荐)

2.通过Modules的Dependencies添加:(推荐)

3.通过Libraries添加:(强烈推荐)(对于新导入的项目,会自动导入lib目录下的相关jar包,我们需要将这些自动添加进来的jar包删除,在Modules)

三、写前端页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<base href="<%=basePath%>">
<title>Insert title here</title>
</head>
<body>
 <form action="login" method="post">
 用户名:<input name="username" type="text" /><br/>
 密码:<input name="password" type="password" /><br/>
 <input type="submit" value="提交" />
 </form>
 </body>
</html>

四、编写后台代码

在src里面新建一个包,包名随意起

包里建个DBConnection类

package demo;
 
import java.sql.Connection;
import java.sql.DriverManager;
 
public class DBConnection {
 
    // 设置成私有的
 //private static final String driver = "com.mysql.jdbc.Driver";// 数据库驱动
   private static final String driver = "com.mysql.cj.jdbc.Driver";// 数据库驱动
 //private static final String url = "jdbc:mysql://localhost:3306/login"; //"login"是指你的数据库名称 3306是端口
    private static final String url = "jdbc:mysql://localhost:3306/login?serverTimezone=UTC";   //"stu"是指你的数据库名称 3306是端口
    private static final String username = "root";         //  数据库用户名                                 
    private static final String password = "root";         //  数据库密码
    private static Connection conn = null;                 //  连接对象
    // 静态代码块加载数据库驱动
    static {
        try {
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    // 单例模式返回数据库连接对象
    public static Connection getConnection() throws Exception {
        if (conn == null) {
            conn = DriverManager.getConnection(url, username, password);
            return conn;
        }
        return conn;
    }
 
    public static void main(String[] args) {
        try {
            Connection conn = DBConnection.getConnection();
            if (conn != null) {
                System.out.println("数据库连接正常");
            } else {
                System.out.println("数据库连接异常");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

写完上面的代码就可以测试下java代码是否连接上数据库、(https://www.cnblogs.com/cn-chy-com/p/10145690.html)

五、编写loginServlet类

package demo;
 
/**
 * 这个类主要的功能是获取前端页面用户输入的用户名和密码 然后调用LoginSuccess方法进行用户名和密码与数据库中数据进行匹配
 * 并进行跳转,用户名和密码正确跳转login_success.jsp,错误跳转login_failed.jsp
 */
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//  登录方法
public class loginServlet implements javax.servlet.Servlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws Exception  {
        String username = request.getParameter("username");// 取得用户名
        String password = request.getParameter("password");// 取得密码
        System.out.println("取得用户名和密码");
         
        LoginSuccess db = new LoginSuccess(); // 构建登陆对象
        boolean canLogin = db.LoginSuccess(username, password);// 取得用户名和密码
        if (canLogin) {// 根据登陆情况,跳转页面
            System.out.println("用户名和密码正确");
            response.sendRedirect("login_success.jsp");
        } else {
            response.sendRedirect("login_failed.jsp");
            System.out.println("用户名和密码错误");
        }
    }
    public void destroy() {
    }
    public ServletConfig getServletConfig() {
        return null;
    }
    public String getServletInfo() {
        return null;
    }
    public void init(ServletConfig arg0) throws ServletException {
    }
 
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        HttpServletRequest rq = (HttpServletRequest) request;
        HttpServletResponse rs = (HttpServletResponse) response;
        try {
            doPost(rq, rs);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
View Code

LoginSuccess类:

package demo;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
//  调用数据库,进行查询用户名和密码
public class LoginSuccess{
    public boolean LoginSuccess(String username, String password) throws Exception {
        boolean returnValue = false;
        String sql = "SELECT * FROM user";
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
 
        try {
            conn = DBConnection.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String userName = rs.getString("username");
                String passWord = rs.getString("password");
                if (userName.equals(username) && passWord.equals(password)) {
                    //   如果用户名和密码都和数据库的一样,就返回true
                    returnValue = true;
                    break;
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return returnValue;
 
    }
}
 
View Code

写到这里,java代码完了么?  已经写完了,但是连接接jsp和servlet的桥梁还没有搭建起来,这时候启动Tomcat,进行跳转肯定是404错误,因为还没有配置web.xml

web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>javaWebDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
          <servlet-name>loginServlet</servlet-name>
          <servlet-class>demo.loginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
          <servlet-name>loginServlet</servlet-name>
          <url-pattern>/login</url-pattern>
  </servlet-mapping>
</web-app>
View Code

写到这里已经基本上完成了,最后再写两个页面就是你登录成功或者失败将进行跳转的页面。

我就截图两个名称:这两个名称一定要和loginServlet类里面要跳转页面的名称保持一致。

这是登录成功的界面。

 

 

(https://www.jianshu.com/p/386a79d16e05)

IDEA创建Servlet全过程:

1、Create New Project -> Java EE -> Web Application -> 项目命名 -> Finish

创建完后的目录结构为:

2、web/WEB-INF中添加classes、lib、src文件夹

File -> Project Structture -> Modules

在web目录下新建WEB-INF目录,并在WEB-INF目录下新建3个目录:classes、lib、src,其中src右键设为source

src用于存放源Servlet的java文件,classes用来存放编译后输出的class文件,lib用于存放第三方jar包

3、配置classes与lib文件夹路径(jar包放在lib中)

File -> Project Structure -> Module -> Paths -> Use module compile output path" -> 将Output path和Test output path都选择刚刚创建的classes文件夹

接着选择Dependencies -> 将Module SDK选择为1.8 -> 点击右边的“+”号 -> 选择 “Jars or Directories” -> 选择刚刚创建的lib文件夹-> 选择“jar directory”

4、配置tomcat容器

Run -> Edit Configuration -> 点击左上角“+”号 -> “Tomcat Server” -> “Local”

在"Name"处输入新的服务名,点击"Application server"后面的"Configure...",弹出Tomcat Server窗口,选择本地安装的Tomcat目录,点击 Apply -> OK

Tomcat版本与jdk版本要匹配(Tomcat7与jdk8),否则tomcat启动无效,

关闭报异常:Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099(Tomcat8与jdk8)

选择Deployment -> 点击右边的“+”号 -> 选择Artifact -> OK
5.运行tomcat,在浏览器中输入localhost:8080/



 
posted @ 2019-05-12 21:15  andy_mz  阅读(205)  评论(0)    收藏  举报