普通项目——>maven项目——>SSM(一)
首先应该明白,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文件,写一个登录功能
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="login" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" name="submit">
</form>
</body>
</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里面的代码修改如下
package pack1; import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.sql.*; @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("password");
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = DriverManager.getConnection(url, "root", "root");
//创建对象
Statement st = conn.createStatement();
String sql = "select * from user";
ResultSet rs = st.executeQuery(sql);
while (rs.next()){
if(username.equals(rs.getString("username")) && password.equals(rs.getString("password"))){
response.getWriter().append("Login successfully!");
}
else{
System.out.println("Error password!");
}
} } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
} protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request, response);
}
}
这样即可实现仅数据库中存在的用户才可以登录!
那么问题来了,你认为缺点是什么呢?
在进行数据库连接时,需要下载驱动包,然后驱动包的加载还存在坑,必须放入tomcat的lib目录下,才能找到
所以基于改进的目的,我们引入了maven这个东西
它可以非常好地管理各种依赖,请看下一篇:普通项目——>maven项目——>SSM(二)
----------------------------------------------------------------------------
大家好,我是ABKing
金麟岂是池中物,一遇风云便化龙!
欢迎与我交流技术问题
普通项目——>maven项目——>SSM(一)的更多相关文章
- ssm项目 maven 项目pon.xml 配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- IDEA中web项目maven项目手动打war包的方式
手动打包 https://blog.csdn.net/ibigboy/article/details/90287963 tomcat部署web项目方法 https://www.cnblogs.com/ ...
- Github/Eclipse管理Maven项目
Eclipse和Git插件 (To-do: 直接从workspace导入也可以,弄明白这个repo管理的本质,查看sprigmvc是如何导入的) 最新版本的Eclipse都直接集成了Git插件 Ecl ...
- 如何将 Java 项目转换成 Maven 项目
本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...
- java的maven项目(一)
Maven项目管理工具 Svn + eclipse 约等于 maven量级 1 Maven的简介 1.1 什么是maven 是apache下的一个开源项目,是纯java开发,并 ...
- 转:如何将 Java 项目转换成 Maven 项目
如何将 Java 项目转换成 Maven 项目 本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明 ...
- 基于SSM框架的简易的分页功能——包含maven项目的搭建
新人第一次发帖,有什么不对的地方请多多指教~~ 分页这个功能经常会被使用到,我之前学习的时候找了很多资源,可都看不懂(笨死算了),最后还是在朋友帮助下做出了这个分页.我现在把我所能想到的知识 做了一个 ...
- Maven构建SSM架构,并分离层次,使用Maven 组织多项目
参考http://www.cnblogs.com/quanyongan/archive/2013/05/28/3103243.html一步一步搭建,感谢QuantSeven 1.建好的目录结构 说明: ...
- Maven项目搭建(二):Maven搭建SSM框架
上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...
随机推荐
- Vue优化首页加载速度 CDN引入
https://blog.csdn.net/blueberry_liang/article/details/80134563
- 自己用ul模拟实现下拉多选框,
模拟实现下拉多选框 效果如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- The Preliminary Contest for ICPC Asia Shanghai 2019 J. Stone game
题目:https://nanti.jisuanke.com/t/41420 思路:当a(a∈S′)为最小值 如果Sum(S′)−a≤Sum(S−S′)成立 那么(∀t∈S′,Sum(S′)−t≤Sum ...
- python 从入门到实践 第三章
在第3章,你将学习如何在被称为列表的变量中存储信息集,以及如何通过遍历列表来操作其中的信息 写注释 # 代码越长 标识好代码的重要性 越来越重要要求习惯:在代码中编写清晰,简洁的注释开始研究更复杂的主 ...
- linux登陆客户端自动执行命令
登陆客户端的时候,检查一下磁盘空间,内存,或是谁在线,每次都要手动去敲命令. 小技巧: cd ~ vi .bashrc 添加: echo "####Check Disk Use####&qu ...
- spring自定义注解实现登陆拦截器
1.spring自定义注解实现登陆拦截器 原理:定义一个注解和一个拦截器,拦截器拦截所有方法请求,判断该方法有没有该注解.没有,放行:有,要进行验证.从而实现方法加注解就需要验证是否登陆. 2.自定义 ...
- Linux基础教程 linux下查询history操作时间的方法
要在linux操作系统中查看history记录的操作时间,可以按如下步骤实现: 学习linux 1,修改/etc/profile文件,在末尾添加:exporthisttimeformat=”%f %t ...
- new 做了什么
var a=function(){ this.che1 = function () { console.log(1) } this.che2 = function () { console.log(2 ...
- 页面禁止刷新处理Js实现
document.onkeydown = function(e) { e = window.event || e; var k = e.keyCode; //屏蔽ctrl+R,F5键,ctrl+F5键 ...
- hdu_3466(01背包)
其实,就是让C商品的q不等于p,其他都相同,这时,你就会发现如果要买C商品的话,肯定得先买C商品,因为买C商品的代价最大.所以,我们可以按照qi-pi的顺序来确定大顺序.这里我们还可以用更严谨的方式来 ...