Spring主要解决什么(了解)
Spring 依赖注入 控制反转(解决实例化问题)
Ioc(日志)
jdbc(xml连接数据库)
mvc(spring封装servlet)
springBoot(入门)
一、什么是SpringBoot
SpringBoot是用来简化Spring应用的搭建到开发的过程,开箱即用,springboot只要很少的spring配置文件
二、入门helloword
1.创建maven项目
2.在pom中引入springboot配置文件
<!-- Spring Boot 启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
<dependencies>
<!-- Spring Boot web依赖 -->
<dependency><groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
3.编写启动类
/**
* @author 小玉
* @create 2023-03-21 11:06
* @目的:
* spring Boot启动类
*/
@SpringBootApplication
publicclassSPBApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(SPBApplication.class,args);
}
}
4.在contorller包中编写helloworld.class文件
/**
* @author 小玉
* @create 2023-03-21 11:08
* @目的:
* SpringBoot hello world案例
*/
//相当于servlet中上面的@webservlet
@RestController
publicclassHelloWorldContorller {
// 相当于servlet中的doget和dopost中的request请求 "/":相当于之前的路径
@RequestMapping("/")
publicStringsayHello(){
return"helloworld";
}
}
三、从配置文件中获取值
可以在配置文件中修改端口号,也可以在配置文件中定义值
![](https://img-blog.csdnimg.cn/img_convert/e3600382ca894b58b90a4aeb77b68fa4.jpeg)
在代码中获取值
![](https://img-blog.csdnimg.cn/img_convert/7d65fdd8b59f4d79b28f9b83dc19f7c0.jpeg)
相当于java用io流从配置文件中取出值读写进内存里 然后再用get方法获取到了这个值并用set方法相当于给属性赋值这种方法封装到@value中
四、把servlet中的代码转换为springboot中的代码
案例
需求:写一个注册页面然后在浏览器中把注册信息存储到数据库中
注册rego.htm;
表单用post方式提交到RegoHtml中
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
</head>
<body>
<formaction="RegoHtml"method="post">
姓名:<inputtype="text"name="name"><br/>
密码:<inputtype="text"name="password"><br/>
<inputtype="submit"value="注册">
</form>
</body>
</html>
静态页面应当存放在resources中templates
然而我们需要在浏览器中访问这个静态页面
第一步:需要在配置文件中配置静态资源地址
spring.resources.staticlocations=classpath:/templates/
# 如果将html页面直接放在templates目录下,可能省略下面这行配置
spring.mvc.view.prefix=views
spring.mvc.view.suffix=.html
第二步:编写访问这个静态页面的类这个类继承WebMvcConfigurer这个类并重写addViewControllers方法
引用注解@Configuration
/**
* @author 小玉
* @create 2023-03-21 15:48
* @目的:
*先继承WebMvcConfigurer 然后重写addViewControllers方法
* 访问html静态页面
*/
@Configuration
publicclassRegoimplementsWebMvcConfigurer {
@Override
publicvoidaddFormatters(FormatterRegistryformatterRegistry) {
}
@Override
publicvoidconfigureMessageConverters(List<HttpMessageConverter<?>>list) {
}
@Override
publicvoidextendMessageConverters(List<HttpMessageConverter<?>>list) {
}
@Override
publicValidatorgetValidator() {
returnnull;
}
@Override
publicvoidconfigureContentNegotiation(ContentNegotiationConfigurercontentNegotiationConfigurer) {
}
@Override
publicvoidconfigureAsyncSupport(AsyncSupportConfigurerasyncSupportConfigurer) {
}
@Override
publicvoidconfigurePathMatch(PathMatchConfigurerpathMatchConfigurer) {
}
@Override
publicvoidaddArgumentResolvers(List<HandlerMethodArgumentResolver>list) {
}
@Override
publicvoidaddReturnValueHandlers(List<HandlerMethodReturnValueHandler>list) {
}
@Override
publicvoidconfigureHandlerExceptionResolvers(List<HandlerExceptionResolver>list) {
}
@Override
publicvoidaddInterceptors(InterceptorRegistryinterceptorRegistry) {
}
@Override
publicMessageCodesResolvergetMessageCodesResolver() {
returnnull;
}
@Override
publicvoidaddViewControllers(ViewControllerRegistryregistry) {
// spring.mvc.view.prefix + /index + spring.mvc.view.suffix 构成完整的请求地址
// 访问项目根目录即是访问 /views/index.html页面
registry.addViewController("/Rego").setViewName("/rego");
}
@Override
publicvoidconfigureViewResolvers(ViewResolverRegistryviewResolverRegistry) {
}
@Override
publicvoidaddResourceHandlers(ResourceHandlerRegistryresourceHandlerRegistry) {
}
@Override
publicvoidconfigureDefaultServletHandling(DefaultServletHandlerConfigurerdefaultServletHandlerConfigurer) {
}
@Override
publicvoidaddCorsMappings(CorsRegistrycorsRegistry) {
}
}
// spring.mvc.view.prefix + /index + spring.mvc.view.suffix 构成完整的请求地址 //
/*
该方法是Spring MVC中的一种配置方式,用于实现无业务逻辑的页面跳转。
其作用是将一个请求直接映射为视图,不需要编写控制器来实现。
在继承WebMvcConfigurerAdapter的配置类中,
通过重写addViewControllers方法并传入URL路径,即可将该路径与一个ViewController绑定。
ViewControllerRegistry是WebMvcConfigurerAdapter的子类,
它实现了WebMvcConfigurer接口。addViewController()方法
返回一个ViewControllerRegistration类型的对象,可以通过该对象进一步配置视图的名称、状态码等信息。 *方法可以将根路径"/"与名为"/rego"的视图绑定。
这样,当用户访问根路径"/"时,
就会直接跳转到名为"/rego"的页面,而不需要编写控制器来实现页面跳转。
*/
第三步:编写表单跳转页面
/**
* @author 小玉
* @create 2023-03-21 15:07
* @目的:
* 用来接收表单跳转
*
*/
//相当与servlet中的@webservlet
@RestController
public class RegoContorller {
//相当于servlet中的dopost和doget请求
//表单跳转到这里
@RequestMapping("/RegoHtml")
public int add(String name,String password){
//name,password用来接收表单里的数据
UserDao userDao = new UserDaoImpl();
//调用添加方法
int insert = userDao.insert(name, password);
//如果添加成功返回1,添加失败返回0
return insert;
}
}