java开发web项⽬前端_Springboot开发web项⽬
当前,Spring毫⽆疑问已经成为java后台对象管理标准框架,除了通过IOC能够管理我们的⾃定义对象的⽣命周期之外还提供了众多功能繁复的可配置功能模块。但同时带来了复杂的配置项,这对初学者⽽⾔简直是⼀种灾难。于是SpringBoot应运⽽⽣,Springboot的出现⼤⼤简化了配置,主要表现在消除了l和依赖注⼊配置的整合,处处遵循规约⼤于配置的思想,将初学者在繁杂的配置项中解放出来,专注于业务的实现,⽽不需要去关注太底层的实现。当然,也可以⾃⼰⼿动添加l,因为对于⾼端玩家⽽⾔,很多时候配置项还是很有必要的。这篇博客不涉及具体的技术细节,只是从⼀个开发者的⾓度梳理下我的使⽤模式。
springboot提供了⼀套完整的web开发流程。前端到后台,再到数据库⼀条龙。使⽤spring开发⼀个web⼯程有两条路线:
1-前后端完全分离
这种⽅式前端开发和后端开发完全分离,只需要协商好接⼝就⾏,前端负责开发页⾯并调⽤后端接⼝展⽰数据。后端只负责提供rest接⼝;
2-使⽤springboot⾃带的模板
springboot⽀持多种主流后端模板:
· Thymeleaf
· FreeMarker
· Velocity
· Groovy
· Mustache
· JSP
需要注意的是,虽然Spring MVC⽀持JSP,但是Spring Boot不建议使⽤JSP,因为在使⽤嵌⼊式servlet容器时,有⼀些使⽤限制。2010年后Velocity停⽌更新,所以这两个都不建议使⽤。以上⼏个模板springboot可以同时⽀持,什么叫同时⽀持?简⽽⾔
之,springboot项⽬中可以同时共存多个模板,需要做的仅仅是在pom⽂件中进⼊相关模板引擎的jar包就可以了,springboot根据模板的后缀名来决定由哪种模板引擎来解析这个动态页⾯。
Thymeleaf : .htmlreact开发框架
freemaker : .ftl
jsp : jsp
所以⼀个页⾯的控制器的实现⽅式可能如下所⽰:
@Controller //标⽰为controller层
public class FreeMarkerIndexController {
@RequestMapping("/freemarkerindexController")//请求路径,会去templates下去寻freemarkerindex
public String freemarkerindexController(Map result) {
System.out.println("hello world");//在控制台输出打印hello world
result.put("name", "wangwu");//添加姓名
result.put("sex", 1);//添加性别
List list = new ArrayList();//创建⼀个⽆序集合
list.add("zhangsan");//添加张三
list.add("lisi");//添加李四
result.put("userlist", list);//添加结果
return "freemarkerindex";//返回templates的结果
}
}
注意这些模板都是后端模板,有别于前端模板(如angular)。
前端模板:前端模板通常是通过模板提供的js根据模板规定的语法规则解析html中的模板标记;
后端模板:类似于前端,⼀个页⾯请求到达之后,后端模板引擎根据特定的语法规则解析模板中的内容,将数据填充到模板中,最终返回给浏览器的实际上已经是⼀个完整的html页⾯了。
⽤IDE创建的Springboot web⼯程可能如图做所⽰:
会发现,springboot的⼯程中并没有传统java web项⽬中的WEB-INF⽬录以及下⾯的l⽂件,这让⼈⼀头雾⽔,以前做java web⽆论使⽤什么框架还没见过不写l的。
那么某些情况下可能有必须使⽤l这种场景,例如tomcat版本兼容性问题,有些版本的tomcat并不⽀持springboot开发的web应⽤,或者之前⽼项⽬想要迁移到springboot上来,完全摒弃l可能不太现实。那么如何在springboot中使⽤原来的l⽅式来配置servlet呢?
1-⾸先先在java/webapp/WEB-INF/下⾯加⼊l
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="java.sun/xml/ns/javaee
version="2.5">
contextConfigLocation
org.springframework.t.web.SpringBootContextLoaderListener
appServlet
org.springframework.web.servlet.DispatcherServlet
contextAttribute
org.t.WebApplicationContext.ROOT
1
appServlet
/
2-将代码中有关Servlet的所有配置全部去掉
例如SpringBootServletInitializer来初始化Servlet,也不能⽤FilterRegistrationBean和ServletRegistrationBean注册Filter和Servlet,统统迁移到l中的。
3-编写前端页⾯/模板
Springboot默认的静态资源路径和模板页⾯路径并不是传统的WEB-INF同⽬录下。⽽是resource/static和resource/template下⾯。下⾯是springboot默认的页⾯路径和传统的java web页⾯路径:
⽆论是基于springboot框架的web⼯程还是传统的使⽤servlet的web⼯程请求的⽅式其实没有什么本质区别,区别在于这两种⽅式中静态⽂件和动态⽂件存放在位置不同:
基于Springboot:静态资源放在resource/static⽬录下;动态资源放啊在resource/templates⽬录下;
不基于springboot框架:静态资源和动态资源存放⽬录结构的组织有⾃⼰决定,并没有强制要求必须放在那个⽬录下⾯。通常将静态资源放在和WEB-INF同⽬录下
个⼈觉得,既然已经选择使⽤springboot,那就⼊乡随俗,尽量使⽤springboot⾥⾯规约使⽤⽅式,不要⽣硬的搞出⼀些很别扭的东西出来。发散的有点远了,回到⽂章刚开始提到的两种web开发思想:前后盾完全分离和使⽤模板开发;这⾥主要介绍下前后端分离这种⽅式的开发。
1-前后端分离开发
使⽤这种⽅式开发web项⽬,后端全部开发成rest API,前端交给专业的前端开发⼯程师去开发,后端和前端之前完全解耦,前端⼯程师可以根据⾃⼰的喜好选择前端开发框架,例如angular、react、vue等。
静态资源存放路径:src\main\resources\static\index.html
js、css、图⽚等静态资源的访问⽅式阈值类似;
动态请求全部按照restAPI的⽅式进⾏进⾏响应。
2-使⽤模板开发
@RequestMapping(value="/")
public String defaultHandler(){
return "thymeleaf";
}
这个例⼦的是意思是对于所有的请求都将会返回名为thymeleaf的模板⽂件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论