ssm实训报告心得_Java开发学习心得(一):SSM环境搭建

Java开发学习心得(一):SSM环境搭建

有一点.NET的开发基础,在学校学过基础语法,对JAVA有点兴趣,就简单学习了一下,记录一下从哪些方面入手的,暂时不打算深入到原理方面,先简单搭下环境看看,所以有些地方可能讲得不慎准确。

1 SSM框架

从网上的讨论来看,SSM框架似乎正在慢慢被Spring Cloud的取代。

1.1 Spring Framework

Spring是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache License 2.0开源许可协议的形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由Rod Johnson和Juergen Hoeller等开发。

Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。 简单来说,Spring是一个轻量级的控制反转(IoC)面向切面(AOP)的容器框架。 如果学习JAVA Spring,这两个东西应该是绕不开的,但是暂时理解不深刻,后面准备深入到代码实现层面,与.NET进行一些比较。

控制反转 IoC(Inversion of Control)

在IoC出现以前,组件之间的协调关系是由程序内部代码来控制的,或者说,以前我们使用New关键字来实现两组间之间的依赖关系的。 这种方式就造成了组件之间的互相耦合。IoC(控制反转)就是来解决这个问题的,它将实现组件间的关系从程序内部提到外部容器来管理。 也就是说,由容器在运行期将组件间的某种依赖关系动态的注入组件中。

依赖注入(Dependency Injection):这就是DI,字面上理解,依赖注入就是将服务注入到使用它的地方。对象只提供普通的方法让容器去决定依赖关系,容器全权负责组件的装配,它会把符合依赖关系的对象通过属性(JavaBean中的setter)或者是构造子传递给需要的对象。

相对于IoC而言,依赖注入(DI)更加准确地描述了IoC的设计理念。所谓依赖注入,即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。

Spring核心思想,IoC与DI详解

面向切面编程 AOP(aspect-oriented programming)

POP面向过程程序设计

OOP面向对象的程序设计

微服务

关于 Spring AOP (AspectJ) 你该知晓的一切

1.2 Spring MVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.2.1 spring boot

Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

正常的Spring MVC构建需要

  • 一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构建文件,最起码要有Spring MVC和Servlet API这些依赖。
  • 一个web.xml文件(或者一个WebApplicationInitializer实现),其中声明了Spring的DispatcherServlet。
  • 一个启动了Spring MVC的Spring配置
  • 一控制器类,以“hello World”相应HTTP请求。
  • 一个用于部署应用程序的Web应用服务器,比如Tomcat。

spring boot 特点

  • 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
  • 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
  • Actuator:让你能够深入运行中的Spring Boot应用程序,一套究竟。

使用Spring Boot的方法之一:Spring Initializr

  • 通过Web构建 http://start.spring.io/

c87567b32fbdbf9add00c2c70a7c45cc.png
  • IDEA
  • 目前IDEA只支持Java8的JDK

168fcc34083679b642b7cd4a66a8f700.png

2.Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(Project Object Model,POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤(生命周期)。

b1816da42c9f26d7de21fcbb6812089d.png
  1. 选择需要的依赖

bc37f712015b2925428adec178850951.png
  1. pom.xml
<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><!-- 添加classpath依赖 --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 开发者工具,当classpath下有文件更新自动触发应用重启 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!-- maven编译插件,用于创建可执行jar包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

构建启动的三种方式

  1. 在IDE(或者命令行工具中的java)启动main函数,IDE中一般都自带Maven,能够帮助我们下载安装Maven依赖。

94513a020716c50741c7c59daba67950.png

2. 运行mvn spring-boot:run命令,但是此种方法要求你在本地环境中必须安装Maven 使用命令行有两种方式,一种是直接找到Maven项目视图中的spring boot启动命令直接运行

608c1a70aece0494f26b3f07b8a72e33.png

dba0a0aea7951c49942a45746039a0c9.png

另一种是直接输入命令

9e3e6651fc75c11825b83926bc40d640.png

3. 使用mvn package命令进行打包,生成一个可以直接运行的 JAR 文件,路径是项目文件中的target目录,使用“java -jar”命令就可以直接运行。

ad733d0fde2a5f5140b847d3d0f8e46c.png

d5c2568a4b626bc56afb9cf6861a7978.png

不管使用哪种方法都可以启动项目,然后访问http://localhost:8080就可以打开网站看到控制器里面的内容了

应用入口

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@SpringBootApplication
public class DemoApplication {@RequestMapping("/")public String index(){return "Hello Spring Boot";}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

对main函数所在的类进行修改,时期能接收Http请求并返回内容。

  • main()方法启动了一个HTTP服务器程序,这个程序默认监听8080端口,并将HTTP请求转发给我们的应用来处理
  • @Controller标注表示Application类是一个处理HTTP请求的控制器,该类中所有被@RequestMapping标注的方法都会用来处理对应URL的请求,@ResponseBody标注告诉Spring MVC直接将字符串作为Web响应(Reponse Body)返回,如果@ResponseBody标注的方法返回一个对象,则会自动将该对象转换为JSON字符串返回
  • index()方法上包含@GetMapping("/")标注,意味着在浏览器中访问http://localhost:8080/(不考虑协议、host和port信息后的路径为"/")后浏览器发送的请求会交给该方法进行处理
  • index()方法直接返回一个字符串,那么相当于直接将字符串"Hello World"作为HTTP请求的响应返回给浏览器,于是我们在浏览器中可以看到相应的返回值
  • 一个启动了Spring MVC的Spring配置
  • 一控制器类,以“hello World”相应HTTP请求。
  • 一个用于部署应用程序的Web应用服务器,比如Tomcat。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中boolean类型占用多少个字节

原文地址&#xff1a;http://www.cnblogs.com/wangtianze/p/6690665.html?utm_sourceitdadao&utm_mediumreferral ----------------------- 为什么要问这个问题&#xff0c;首先在Java中定义的八种基本数据类型中&#xff0c;除了其它七种类型都有明确的内存占用字节数外…

java虚引用作用_深入理解Java中的引用(二)——强软弱虚引用

深入理解Java中的引用(二)——强软弱虚引用在上一篇文章中介绍了Java的Reference类&#xff0c;本篇文章介绍他的四个子类&#xff1a;强引用、软引用、弱引用、虚引用。强引用(StrongReference)强引用是我们在代码中最普通的引用。示例代码如下&#xff1a;Object o new Obje…

SQL查询表的列名

SELECT COLUMN_NAME FROM DBA_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;

java老鸟123怎么样_java入门123——一个老鸟的java学习心得.doc

java入门123——一个老鸟的java学习心得java入门123——一个老鸟的java学习心得篇一&#xff1a;java初学者学习心得学习Java心得体会学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java)&#xff0c;兴趣最重要。一直觉得自己在学计算机编程语…

ruby 爬虫爬取拉钩网职位信息,产生词云报告

思路&#xff1a;1.获取拉勾网搜索到职位的页数 2.调用接口获取职位id 3.根据职位id访问页面&#xff0c;匹配出关键字 url访问采用unirest&#xff0c;由于拉钩反爬虫&#xff0c;短时间内频繁访问会被限制访问&#xff0c;所以没有采用多线程&#xff0c;而且每个页面访问时间…

评论语义分析 分词 分类python_用python调用ICTCLAS50进行中文分词

直接上源码吧tokenizer类&#xff1a;#_*_encoding:utf-8_*_from ctypes import *class tokenizer:def __init__(self):self._stext[、,“,”,&#xff0c;,。,《,》,&#xff1a;,&#xff1b;,!,‘,’,?,&#xff1f;,&#xff01;,, ,] #枚举标点符号包括空格self._stopwor…

java对日期Date类进行加减运算、年份加减,月份加减

JAVA处理日期时间常用方法&#xff1a; 1.Java.util.Calendar Calendar 类是一个抽象类&#xff0c;它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法&#xff0c;并为操作日历字段&#xff08;例如获得下星期的日期&#xff09…

idle扩展插件_Python3.4学习笔记之 idle 清屏扩展插件用法分析

本文实例讲述了Python3.4 idle 清屏扩展插件用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;python idle 清屏问题的解决&#xff0c;使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到这样两种答案&#xff1a;1.在shell中输入…

内存堆和栈的区别

原文链接&#xff1a;http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html -------------------------------------------------------------------------------- 在计算机领域&#xff0c;堆栈是一个不容忽视的概念&#xff0c;我们编写的C语言程序基本上都要用…

MYSQL安装和配置

Win10安装MySQL5.7.22 解压缩版&#xff08;手动配置 1.下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后&#xff1a; 2.可以把解压的内容随便放到一个目录&#xff0c;我的是如下目录&#xff08;放到C盘的话&#xff0…

python删除过期文件_python删除过期文件的方法

本文实例讲述了python删除过期文件的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;# remove all jpeg image files of an expired modification date mtime# you could also use creation date (ctime) or last access date (atime)# os.stat(filename) returns …

【很久之前的一篇老文章】一位程序员工作10年总结的13个忠告

展望未来&#xff0c;总结过去10年的程序员生涯&#xff0c;给程序员小弟弟小妹妹们的一些总结性忠告。 走过的路&#xff0c;回忆起来是那么曲折&#xff0c;把自己的一些心得体会分享给程序员兄弟姐妹们&#xff0c;虽然时代在变化&#xff0c;但是很可能你也会走我已经做过的…

apply()与call()的区别

一直都没太明白apply()与call()的具体使用原理&#xff0c;今日闲来无事&#xff0c;决定好好研究一番。 JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法&#xff0c;它们的语法分别为&#xff1a; /*apply()方法*/ function.apply(thisObj[, argArray]…

java代码执行了两次_Java中JComboBox的itemStateChanged事件执行两次的解释

今天做项目&#xff0c;用到了JComboBox&#xff0c;即下拉列表框。为了在被选中的项发生改变时获得被选中的项&#xff0c;所以使用的ItemStateChanged事件&#xff0c;可是问题就来了&#xff0c;每次触发该事件&#xff0c;它都执行两次&#xff0c;屡试不爽。一开始以为是代…

python连接mongo_使用简单的Python连接访问MongoDB

继续来聊MongoDB。MongoDB作为了一个数据库产品软件&#xff0c;除了服务器Server端进程(mongod)外&#xff0c;还提供了比较丰富的访问连接接口。我们最常用的就是两个类型&#xff0c;一个是原生mongo shell&#xff0c;另一个就是应用程序语言访问接口。1、从Mongo Shell到应…

spring与mybatis三种整合方法

原文链接&#xff1a;http://www.cnblogs.com/wangmingshun/p/5674633.html ------------------------------------------------------------------------------------------------- 1、采用MapperScannerConfigurer&#xff0c;它将会查找类路径下的映射器并自动将它们创建成…

js常用的2中排序方法:冒泡排序和快速排序

冒泡排序&#xff1a;例如9 4 5 6 8 3 2 7 10 1 首先&#xff1a;9和4比较 4放前 4 9 5 6 8 3 2 7 10 1 4和5比较 4不动 4 9 5 6 8 3 2 7 10 1 4和6比较 4不动 4 9 5 6 8 3 2 7 10 1 4和3比较 3放前 3 9 5 6 8 4 2 7 10 1 3和2比较 2放前 2 9 5 6 8…

java 注册页面正则式_Java使用正则表达式对注册页面进行验证功能实现

本文给大家介绍java使用正则表达式对注册页面进行验证的代码&#xff0c;代码如下所示&#xff1a;package regex;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class registered {public static void main(String[] args)…

python 编程效率_如何有效提升数据分析效率?五大Python技巧

如何有效提升数据分析效率&#xff1f;相信这是所有数据分析工作者都想解决的问题。本文整理了五大python技巧&#xff0c;分别是Pandas Profiling&#xff1b;使用 Cufflinks 和 Plotly 绘制 Pandas 数据&#xff1b;IPython 魔术命令&#xff1b;Jupyter 中的格式编排&#x…

please select a vaild python interpret

当 JetBrains PyCharm 2017.1.3 x64 遇到 please select a vaild python interpret 错误时&#xff1a; 进入PyCharm setting 选项&#xff0c;搜索 interpret