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(); } } }
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; } }
写到这里,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>
写到这里已经基本上完成了,最后再写两个页面就是你登录成功或者失败将进行跳转的页面。
我就截图两个名称:这两个名称一定要和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文件夹
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)

浙公网安备 33010602011771号