SpringBoot入门-2
使用Spring Initializer快速创建Spring Boot项目1、IDEA:使用 Spring Initializer快速创建项目IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目
选择我们需要的模块;向导会联网创建Spring Boot项目
默认生成的Spring Boot项目;
主程序已经生成好了,我们只需要我们自己的逻辑
resources文件夹中目录结构
static:保存所有的静态资源。js css images
templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf)
application.properties:Spring Boot应用的配置文件,可以修改一些默认设置
2、STS使用 Spring Starter Project快速创建项目 Spring Tool Suite是一个基于Eclipse的开发环境,可以自定义用于开发Spring应用程序。它提供了一个随时可用的环境 ...
SpringBoot入门-1
一、Spring Boot 入门1、Spring Boot 简介
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案;
2、微服务2014,martin fowler
微服务:架构风格(服务微化)
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
单体应用:ALL IN ONE
微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;
详细参照微服务文档
3、环境准备环境约束
jdk1.8:Spring Boot 推荐jdk1.7及以上;java version “1.8.0_112”
maven3.x:maven 3.3以上版本;Apache Maven 3.3.9
IntelliJIDEA2017:IntelliJ IDEA 2017.2.2 x64、STS
SpringBoot 1.5.9.RELEASE:1.5.9;
统一环境;
1、MAVEN设置;给maven 的settings.xml配置文件的profiles标签添加
123456789101112<profile> ...
错误问题记录-1
Tomcat的8080端口占用问题Tomcat的8080端口被占用,控制台输入netstat -ano | findstr “8080”找到对应的pid值,通过任务管理器找到相应的程序,发现是Oracle-TNSLSNR.EXE占用8080端口号的问题。
解决方法之一:改变TNSLSNR.exe占用的端口。
运行cmd,输入sqlplus / as sysdba;
输入exec dbms_xdb.sethttpport(8088)。(其中8088为更改后的端口)
解决方法之二:修改Tomcat配置文件
进入tomcat的安装路径,进入到conf文件中找到server.xml。
找到Connector标签,protocol属性为’’HTTP/1.1’’。修改其中的port属性值
123<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" ...
SpringMVC学习-8
Spring MVC处理异常有3种方式
使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver;
实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器;
使用@ExceptionHandler注解实现异常处理;
Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进 行异常的处理
使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver在SpringMVC配置文件中添加配置
123456789101112131415<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- 定义默认的异常处理页面,当该异常类型的注册时使用 --> <property n ...
SpringMVC学习-7
拦截器的概述
SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。
可以定义拦截器链(栈),连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。
拦截器和过滤器的功能比较类似,有区别
过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。
拦截器是SpringMVC框架独有的。
过滤器配置了/*,可以拦截任何资源。
拦截器只会对控制器中的方法进行拦截。
拦截器也是AOP思想的一种实现方式
发送请求时被拦截器拦截,在控制器的前后添加额外功能.
跟 AOP 区分开.AOP 在特定方法前后扩充(对 ServiceImpl)
拦截器,请求的拦截.针对点是控制器方法.(对 Controller)
想要自定义拦截器,需要实现HandlerInterceptor接口。
实现自定义拦截器的步骤
新建controller并实现HandlerInterceptor重写方法
HandlerInterceptor接口中的方法
方法名
执行顺序
页面跳转
返回值
preHandle
co ...
SpringMVC学习-6
文件下载
访问资源时响应如果没有设置 Content-Disposition,浏览器默认按照 inline 值进行处理。inline 能显示就显示,不能显示就下载.
只需要修改相应头中 Context-Disposition=”attachment;filename=文件名”
attachment 下载,以附件形式下载.
filename=值就是下载时显示的下载文件名
1res.setHeader("Content-Disposition", "attachment;filename=文件名");
通过apache提供的jar包来实现
实现步骤
导入jar包
在 jsp 中添加超链接,设置要下载文件。在 springmvc 中放行静态资源files文件夹
编写控制器方法
123456789101112<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding ...
SpringMVC学习-5
JSP 九大内置对象和四大作用域复习JSP九大内置对象
名称
类型
含义
获取方式
request
HttpServletRequset
封装所有请求信息
方法参数
response
HttpServletResponse
封装所有相应信息
方法参数
session
HttpSession
封装所有会话信息
req.getSession()
application
ServletContext
所有信息
getServletContext(); requset.getServletContext;
out
PrintWriter
输出对象
response.getWriter()
exception
Exception
异常对象
page
Object
当前页面对象
pageContext
pageContext
获取其他信息
config
ServletConfig
配置信息
四大作用域
page
在当前页面不会重新实例化。作用域当前页面
request 在一次请求中同一个对象,下次请求重新实例化一个request 对象.
...
SpringMVC学习-4
SpringMVC参数传递基本数据类型参数
默认保证参数名称和请求中传递的参数名相同
如果请求参数名和方法参数名不对应使用@RequestParam注解中的value值进行匹配赋值(都适用)
如果方法参数是基本数据类型(不是封装类)可以通过@RequestParam中的defaultValue值设置参数默认值,可以防止没有参数时 500错误
通过@RequestParam注解中的required的强制要求必须某个参数值不能为空
对象数据类型
请求参数为对象时,前台传递的参数名与对象的属性名一致,且生成get与set方法
请求参数为对象.属性格式
集合对象类型参数
多个同名参数复选框传递的参数就是多个同名参数
restful 传值方式
在@RequestMapping 中一定要和请求格式对应 :/控制器名/{名称}/{名称}
{名称} 中名称可以自定义名称
@PathVariable 获取@RequestMapping 中内容,默认按照方法参数名称去寻找.
跳转方式SpringMVC中默认的跳转方 ...
SpringMVC学习-3
SpringMVC环境搭建
导入jar包
配置web.xml文件
配置SpringMVC配置文件
编写控制器Controller
字符编码过滤器
filter-class:org.springframework.web.filter.CharacterEncodingFilter
url-pattern配置为/*从而拦截一切请求,对其进行设置字符编码
设置初始化参数encoding的值,配置字符编码格式
视图解析器
SpringMVC 会提供默认视图解析器.
程序员自定义视图解析器 prefix-前缀 suffix-后缀
如果希望不执行自定义视图解析器,在方法返回值前面添加forward:或 redirect:
1234567891011121314151617181920212223<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmln ...
SpringMVC学习-2
在Spring整体框架的核心概念中,容器的核心思想是管理Bean的整个生命周期。但在一个项目中,Spring容器往往不止一个,最常见的场景就是在一个项目中引入Spring和SpringMVC这两个框架,其本质就是两个容器:Spring是根容器,SpringMVC是其子容器。关于这两个容器的创建、联系及区别也正是本文所关注的问题。
Spring容器、SpringMVC容器与ServletContext之间的关系Spring的启动过程其实就是其Spring IOC容器的启动过程。特别地,对于web程序而言,IOC容器启动过程即是建立上下文的过程。
Spring的启动过程1234567891011121314151617181920212223242526272829303132<web-app> ... <!-- 利用Spring提供的ContextLoaderListener监听器去监听ServletContext对象的创建,并初始化WebApplicationContext对象 --> <listener> <lis ...