普通项目——>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 ...
随机推荐
- 一个web应用的诞生(6)
之前登录注册的功能都已经完成,但是登录成功回到首页发现还是白茫茫的一片,对的,title一直都写得博客,那么最终目的也是写出一个轻博客来,但是,在发表文章之前是不是要先记录一下登录状态呢? 用户登录 ...
- Css min-height max-height min-width max-height
Css min-height应用地方解释我们有时设置一个对象盒子时候避免对象没有内容时候不能撑开,但内容多少不能确定所以又不能固定高度,这个时候我们就会需要css来设置min-height最小高度撑高 ...
- 对flex深入研究一点
flex顶层设计 1.在任何流动的方向上(包括上下左右)都能进行良好的布局 2.可以以逆序 或者 以任意顺序排列布局 3.可以线性的沿着主轴一字排开 或者 沿着侧轴换行排列 4.可以弹性的在任意的容器 ...
- shell练习--PAT题目1003:我要通过!(成功案例)
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: ...
- The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs
题目:https://nanti.jisuanke.com/t/41399 思路:差分数组 区间内操作次数为奇数次则灯为打开状态 #include<bits/stdc++.h> using ...
- selenium+常见操作
1.多窗口操作 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 句 ...
- SWPU2019 伟大的侦探
01editor 选择 EBCDIC编码得到压缩包的密码 这里用到的是福尔摩斯里面的跳舞的小人加密 结果是:iloveholmesandwllm
- 大数据笔记(二十九)——RDD简介、特性及常用算子
1.什么是RDD? 最核心 (*)弹性分布式数据集,Resilent distributed DataSet (*)Spark中数据的基本抽象 (*)结合源码,查看RDD的概念 RDD属性 * Int ...
- vue 自己写的一个日历
样式: //quanbu全部代码 <template> <div class="priceListContent clearfix"> <!-- 顶部 ...
- Fatal error: Class 'think\db' not found
在model层写了一个查询语句结果报错 Fatal error: Class 'think\db' not found $list= Db::table('m_my_reserve_assess' ...