首先应该明白,SSM是什么?
SSM指的是Spring+SpringMVC+MyBatis
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
现在网上很多创建SSM项目的博客
但是很可惜,由于项目是整合三大框架,许多小白可能不懂为什么要这么做,配置文件为什么要这么写
甚至许多人,只是听说三大框架好,却不知道好在哪儿。。。
本文就是这样的背景下产生的,我将带你一步一步揭开三大框架的神秘面纱,以后可能会再写一篇使用SSM开发实战项目的博客
我们要创建一个java web项目
看一下目录结构
我们在src下创建一个package包,再创建一个servlet,创建完后,结构如下
但是你能很快发现,红色的下划线出现的,这是因为我们没有导入Tomcat的包
点击 FIle->Project Structure
这样,你的报错信息就会消失啦!
我们运行看一下
可以看到,运行成功啦
我们接下来修改一下index.jsp文件,写一个登录功能
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>$Title$</title> 5 </head> 6 <body> 7 <form action="login" method="post"> 8 <input type="text" name="username"> 9 <input type="password" name="password"> 10 <input type="submit" name="submit"> 11 </form> 12 </body> 13 </html>
再修改myServlet.java里面的代码
package pack1; import javax.servlet.annotation.WebServlet; import java.io.IOException; @WebServlet("/login") public class myServlet extends javax.servlet.http.HttpServlet { protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("passworrd"); if(username.equals("admin") && password.equals("admin")) response.getWriter().append("Login Successfully!"); } protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { doPost(request, response); } }
运行一下
登录成功了
但是你能很明显看到,对于本项目而言,没有连接数据库,账号密码全部保存在代码里面
所以,接下来我们要使用java连接数据库
首先下载连接mysql的驱动包:http://static.runoob.com/download/mysql-connector-java-5.1.39-bin.jar
在网上看到有的人说需要在Project Structure中把驱动添加进依赖里
可是相信我,真的没有用!因为会报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
找不到驱动,而且这个报错很扯淡的地方是:Tomcat找不到驱动!
在普通java项目中,连接数据库,只需要导入jdbc的包即可,但是在java web项目中,这样会失败!
必须在tomcat目录下的lib文件夹中,把jdbc的包放入才可以!
感谢前辈https://blog.csdn.net/huangbiao86/article/details/6428608
下载完毕后,把它导入放入tomcat目录中
把myServlet.java里面的代码修改如下
1 package pack1; 2 3 import javax.servlet.annotation.WebServlet; 4 import java.io.IOException; 5 import java.sql.*; 6 7 @WebServlet("/login") 8 public class myServlet extends javax.servlet.http.HttpServlet { 9 protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { 10 String username = request.getParameter("username"); 11 String password = request.getParameter("password"); 12 try { 13 //加载驱动 14 Class.forName("com.mysql.jdbc.Driver"); 15 //获取链接 16 String url = "jdbc:mysql://localhost:3306/test"; 17 Connection conn = DriverManager.getConnection(url, "root", "root"); 18 //创建对象 19 Statement st = conn.createStatement(); 20 String sql = "select * from user"; 21 ResultSet rs = st.executeQuery(sql); 22 while (rs.next()){ 23 if(username.equals(rs.getString("username")) && password.equals(rs.getString("password"))){ 24 response.getWriter().append("Login successfully!"); 25 } 26 else{ 27 System.out.println("Error password!"); 28 } 29 } 30 31 } catch (ClassNotFoundException e) { 32 e.printStackTrace(); 33 } catch (SQLException e) { 34 e.printStackTrace(); 35 } 36 } 37 38 protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { 39 doPost(request, response); 40 } 41 }
这样即可实现仅数据库中存在的用户才可以登录!
那么问题来了,你认为缺点是什么呢?
在进行数据库连接时,需要下载驱动包,然后驱动包的加载还存在坑,必须放入tomcat的lib目录下,才能找到
所以基于改进的目的,我们引入了maven这个东西
它可以非常好地管理各种依赖,请看下一篇:普通项目——>maven项目——>SSM(二)
----------------------------------------------------------------------------
大家好,我是ABKing
金麟岂是池中物,一遇风云便化龙!
欢迎与我交流技术问题