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虚引用作用_深入理解Java中的引用(二)——强软弱虚引用

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

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

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

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…

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;屡试不爽。一开始以为是代…

spring与mybatis三种整合方法

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

please select a vaild python interpret

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

Grafana分析Nginx日志

配置Groub by -Terms时报错&#xff0c;提示需要设置fielddatatrue&#xff0c;报错内容大概如下&#xff1a; "Fielddata is disabled on text fields by default ... " 解决方法如下&#xff1a; https://www.elastic.co/guide/en/elasticsearch/reference/curren…

IDEA 更换主题

1、下载主题文件 百度或者谷歌 IDEA themes 网址有可能会变化。目前是 http://color-themes.com 选择自己喜欢的颜色&#xff0c;下载。 2、导入主题文件 File----Import Setting 导入下载的jar文件&#xff0c;一路确认&#xff0c;idea会自动重启。 3、选择主题 点击…

【CentOS 7笔记】cp、mv、文档查看方式

2019独角兽企业重金招聘Python工程师标准>>> 一. copy 常用cp -r/R #拷贝目录&#xff0c;递归 cp -i #覆盖时会提示&#xff0c;默认项 cp -p #保留源目录或源文件的属性 cp -b #源文目与目的文目建立链接&#xff0c;链接 cp -f #强制覆盖 cp -v …

php 情书,php趣味编程 - php输出笛卡尔情书的秘密

/*笛卡尔情书的秘密心形图案的实现。重点是心形函数ra(1-sin),据说这是笛卡尔死前寄出的最后一封情书内容。这里面隐藏着一个刻骨铭心的秘密&#xff1b;“一生只为等待能手绘这个函数给我的人”*/$width 500;$height 500;header("Content-type: image/gif");$img …

015. 深入JVM学习—Java引用类型

2019独角兽企业重金招聘Python工程师标准>>> 1. 引用类型划分 强引用&#xff1a;当内存不足时&#xff0c;JVM宁可出现“OutOfMemoryError”错误停止&#xff0c;也需要进行保存&#xff0c;并且不会将此空间回收。 软引用&#xff1a;当内存不足的时候&#xff0…

表正在被别的用户或进程使用_linux内核对进程的管理分为两个方面

嵌入式开发直播课 - linux内核通知链 - 创客学院直播室​www.makeru.com.cn众所周知&#xff0c;现在的分时操作系统能够在一个CPU上运行多个程序&#xff0c;让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。在linux系统中&#xff0c;每个被运行的程序实…

android studio生成签名导打包的方法

原文链接&#xff1a;http://blog.csdn.net/l_215851356/article/details/69914213 ---------------------------------如果图片失效了&#xff0c;见有道云笔记------------------- 方法一&#xff1a; 在android中。可以非常快速的生成签名文件.jsk文件。步骤如下&#xff1…

vbs脚本延时_Wincc的脚本进程执行问题

接到某同事B的电话&#xff0c;说是一段Wincc里面的VBS脚本出现了问题&#xff1a;A按钮和B按钮&#xff0c;要求A按钮点击后&#xff0c;对plc某变量写1并等待5s后写0&#xff0c;在这5s期间如果点击B按钮&#xff0c;同样是对另外一个变量如此操作&#xff0c;则plc在5s内检测…

微信小程序 - 非Form数据怎么发送到后端?

通过设置异步缓存&#xff0c;就可以做到 wx.setStorageSync(imgs,imglist); 最后的提交信息&#xff1a;

DjangoAdmin站点调整列表页展示

调整列表页展示 1 页大小 每页中显示多少条数据&#xff0c;默认为每页显示100条数据&#xff0c;属性如下&#xff1a; list_per_page1001&#xff09;打开booktest/admin.py文件&#xff0c;修改AreaAdmin类如下&#xff1a; class BookInfoAdmin(admin.ModelAdmin):list_per…

大华热成像netsdkdemo_千年博物,智慧展馆丨大华股份全力守护“华夏珍宝库”...

陕西历史博物馆作为我国第一座大型现代化国家级博物馆&#xff0c;以及首批国家一级博物馆和全国排名前五的国家顶级博物馆&#xff0c;被誉为“古都明珠 华夏宝库”&#xff0c;是讲述五千年中华文化的大学堂&#xff0c;是我国博物馆事业发展的重要里程碑。随着陕西历史博物馆…