小言_互联网的博客

javaWeb前后台交互(Jdbc+Jsp+Servlet+mysql)

402人阅读  评论(0)

最近翻看以前的笔记,想到以前自己学习完servlet+jsp+mysql却怎么也把前后台连接不上,最后自己折腾好几天,终于搭建成功,写这个笔记也算是记录一下,代码是那个时候的代码,现在稍微加工了下。可以照下面步骤先把前后台连接上,有点成就感,给自己打打气加油加油,然后再研究代码怎么写的。毕竟都是从那个时候爬(自学坑太多)过来的。(这段话只是针对你我等小白,大神请自动忽略,谢谢配合)

这次就写最简单的前后台交互,不涉及MVC架构,因此也就不分dao、service、pojo,后面我会再整理一篇按照MVC模式进行交互。

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

 

一、搭建环境

创建动态web项目,File---> New--->Dynamic …… 

 

 

然后Finish完成,动态web项目创建成功。

二、导入jar包

因为要连接数据库,因此要导入mysql驱动包。一定要刚开始就导入。

有时候写项目时,刚开始没导包,忘记了,最后怎么都连接不上数据库,代码检查好几遍没问题,最后结果是没导包。

三、写前端页面

在WebContext文件夹右键,new一个jsp页面,起名index.jsp,finish即可。

index.jsp页面代码,这里我们只是想实现功能,暂且不谈论页面美不美观,有强迫症的朋友自行添加css和js代码。


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

四、编写后台代码

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

包里建个DBConnection类


  
  1. package demo;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. public class DBConnection {
  5. // 设置成私有的
  6. private static final String driver = "com.mysql.jdbc.Driver"; // 数据库驱动
  7. private static final String url = "jdbc:mysql://localhost:3306/login"; //"login"是指你的数据库名称 3306是端口
  8. private static final String username = "root"; // 数据库用户名
  9. private static final String password = "root";         // 数据库密码
  10. private static Connection conn = null; // 连接对象
  11. // 静态代码块加载数据库驱动
  12. static {
  13. try {
  14. Class.forName(driver);
  15. } catch (Exception e) {
  16. e.printStackTrace();
  17. }
  18. }
  19. // 单例模式返回数据库连接对象
  20. public static Connection getConnection() throws Exception {
  21. if (conn == null) {
  22. conn = DriverManager.getConnection(url, username, password);
  23. return conn;
  24. }
  25. return conn;
  26. }
  27. public static void main(String[] args) {
  28. try {
  29. Connection conn = DBConnection.getConnection();
  30. if (conn != null) {
  31. System.out.println( "数据库连接正常");
  32. } else {
  33. System.out.println( "数据库连接异常");
  34. }
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. }

写完上面的代码就可以测试下java代码是否连接上数据库、

控制台运行结果:

到这里该写serevlet代码了

五、编写loginServlet类

 


  
  1. package demo;
  2. /**
  3. * 这个类主要的功能是获取前端页面用户输入的用户名和密码 然后调用LoginSuccess方法进行用户名和密码与数据库中数据进行匹配
  4. * 并进行跳转,用户名和密码正确跳转login_success.jsp,错误跳转login_failed.jsp
  5. */
  6. import java.io.IOException;
  7. import javax.servlet.ServletConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. // 登录方法
  14. public class loginServlet implements javax.servlet.Servlet {
  15. public void doPost(HttpServletRequest request, HttpServletResponse response)
  16. throws Exception {
  17. String username = request.getParameter( "username"); // 取得用户名
  18. String password = request.getParameter( "password"); // 取得密码
  19. System.out.println( "取得用户名和密码");
  20. LoginSuccess db = new LoginSuccess(); // 构建登陆对象
  21. boolean canLogin = db.LoginSuccess(username, password); // 取得用户名和密码
  22. if (canLogin) { // 根据登陆情况,跳转页面
  23. System.out.println( "用户名和密码正确");
  24. response.sendRedirect( "login_success.jsp");
  25. } else {
  26. response.sendRedirect( "login_failed.jsp");
  27. System.out.println( "用户名和密码错误");
  28. }
  29. }
  30. public void destroy() {
  31. }
  32. public ServletConfig getServletConfig() {
  33. return null;
  34. }
  35. public String getServletInfo() {
  36. return null;
  37. }
  38. public void init(ServletConfig arg0) throws ServletException {
  39. }
  40. public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
  41. HttpServletRequest rq = (HttpServletRequest) request;
  42. HttpServletResponse rs = (HttpServletResponse) response;
  43. try {
  44. doPost(rq, rs);
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. }

LoginSuccess类:


  
  1. package demo;
  2. import java.sql.Connection;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. // 调用数据库,进行查询用户名和密码
  7. public class LoginSuccess{
  8. public boolean LoginSuccess(String username, String password) throws Exception {
  9. boolean returnValue = false;
  10. String sql = "SELECT * FROM user";
  11. Connection conn = null;
  12. Statement stmt = null;
  13. ResultSet rs = null;
  14. try {
  15. conn = DBConnection.getConnection();
  16. stmt = conn.createStatement();
  17. rs = stmt.executeQuery(sql);
  18. while (rs.next()) {
  19. String userName = rs.getString( "username");
  20. String passWord = rs.getString( "password");
  21. if (userName.equals(username) && passWord.equals(password)) {
  22. // 如果用户名和密码都和数据库的一样,就返回true
  23. returnValue = true;
  24. break;
  25. }
  26. }
  27. } catch (ClassNotFoundException e) {
  28. e.printStackTrace();
  29. } catch (SQLException e) {
  30. e.printStackTrace();
  31. }
  32. return returnValue;
  33. }
  34. }

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

web.xml代码:


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <display-name>javaWebDemo </display-name>
  4. <welcome-file-list>
  5. <welcome-file>index.html </welcome-file>
  6. <welcome-file>index.htm </welcome-file>
  7. <welcome-file>index.jsp </welcome-file>
  8. <welcome-file>default.html </welcome-file>
  9. <welcome-file>default.htm </welcome-file>
  10. <welcome-file>default.jsp </welcome-file>
  11. </welcome-file-list>
  12. <servlet>
  13. <servlet-name>loginServlet </servlet-name>
  14. <servlet-class>demo.loginServlet </servlet-class>
  15. </servlet>
  16. <servlet-mapping>
  17. <servlet-name>loginServlet </servlet-name>
  18. <url-pattern>/login </url-pattern>
  19. </servlet-mapping>
  20. </web-app>

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

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

这是登录成功的界面。

最后放张我的整体结构图,其实也没什么结构,没有分包什么的。

数据库代码,本来很简单就不想放,但是考虑到这个完整性,还是放进来。


  
  1. CREATE TABLE `user` (
  2. `id` int( 20) NOT NULL AUTO_INCREMENT,
  3. `username` varchar( 20) DEFAULT NULL,
  4. `password` varchar( 20) DEFAULT NULL,
  5. PRIMARY KEY ( `id`)
  6. ) ENGINE= InnoDB AUTO_INCREMENT= 2 DEFAULT CHARSET=utf8;

六、总结

    写到这里前后台交互,基本上这个流程是完成了,代码逻辑看起来有点乱乱的,但现在没有分包,也没有进行JDBC部分代码提取,后面我会再整理一篇笔记按照MVC模式进行交互。

 

如果你完全复制我的代码,还报错,这个时候很有可能是环境问题,因为我都是测试了好几遍完全正确才截图的,有问题欢迎留言讨论。

 

如果有不同看法,或者是文中写错的地方,麻烦大佬留言指正文章错误,谢谢!!! 

转载请声明出处:https://blog.csdn.net/blackplus28/article/details/80603863

 

MVC模式下前后台交互:https://blog.csdn.net/blackplus28/article/details/80945137

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

2019-9-19更新:

获取源码:

1、评论,我看到会通过邮件发送源码。但不保证及时性,我也在上班,有时很忙。

 

 

 

 

 

 


转载:https://blog.csdn.net/BlackPlus28/article/details/80603863
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场