栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot结合FreeMarker开发

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot结合FreeMarker开发

SpringBoot 1 定义

基于spring的做了二次开发的快速开发框架。

//javaweb项目从开始到运行有哪些步骤

1.创建Web项目2.导入依赖 3.编写代码 4.项目编译成war包 5. 配置Web应用服务器(Tomcat) 6.将war包,发布到tomcat上 7.启动tomcat 8.浏览器访问tomcat端口

常见的Web应用服务器:Tomcat 、JBoss、WebLogic、IBM WebSphere

2 常见的核心注解

@SpringBootApplication 用于Spring主类上最最最核心的注解,自动化配置文件,表示这是一个SpringBoot项目,用于开启SpringBoot的各项能力。相当于@SpringBootConfigryation、@EnableAutoConfiguration、@ComponentScan三个注解的组合保持SpringBootApplication文件最最外层目录,不然扫描不到外层的类

@SpringBootConfiguration 所有的主键类都会被该注解给监测到

@EnableAutoConfiguration 自动加载我们整个项目Configuratio类与Component类

3 MVC

在处理一个request请求的时候分为三个层次。

V 视图层------->JSP,Html(超文本标记语言),ftl

在springboot搭配mvc的时候V层用FreeMarker

C 控制层------->Servlet

C层使用DispatchServlet从而转化注解为@Controller

M 模型层------>业务逻辑处理与持久化(即数据模型处理->保存在数据库等)javabean

M层上由Service和Repository Mybatis延伸的@Mapper

4.初次配置尝试(不连接数据库)

1.创建项目(略)

2.添加依赖(这一步其实在创建项目时就可以完成)

 
        org.springframework.boot
        spring-boot-starter-web
 

3.前端界面简写

用户登录
用户名:
密码:

4.配置配置文件application.properties

#更改访问端口,可以解决端口被占用问题
server.port=9999
#模板能够被支持,开启freemarker对html的支持
spring.freemarker.suffix=.html
#打开静态文件的权限
#在springboot2.3以前是没有带web,即spring.resources.static-locations
spring.web.resources.static-locations=classpath:/templates

5.控制类创建controller

//Controller是一个springMVC中接受并处理请求的实现类,可以通过该类型的类去做请求的调度与分发,通常称为控制器类,它是SpringMVC的具体实现
@Controller//该注解声明此类是一个控制器类
public class LoginController{   
    @RequestMapping("/sign")
    //处理所有http所有请求类型的请求
    //@GetMapping、@PostMapping、@DeleteMapping、@PutMapping等 处理具体http请求类型 ,类型不匹配将报405
    //get与post是http协议中提交数据的方式,
    //@ResponseBody//将处理结果转化成json的形式转换出去{key:value}
    public String sign(@RequestParam("username")String name, @RequestParam("password")String password){
        if("admin".equals(name)&&"123456".equals(password)){return "index";}
        else {return "login";}}}

http八种提交请求的方式:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT

6.启动tomcat,访问 http://localhost:9999/login.html

5.SpringBoot配置文件

优点:更改配置参数时,不需要重新修改逻辑代码 需要重启tomcat

1.Application.properties默认级 参数形式为key-vlaue 键值对形式

2.Application.yml

3.自定义名的properties、yml 不会默认加载,需要手工指定

@PropertySource("classpath:) String name,@RequestParam(value = "password",required = false) String pwd){return "welcome";}
    
	//@PathVariable
    @RequestMapping("/pathvar/{abc}")//{abc}占位作用 pathvar传值之后都会带上{abc}的内容 web接口传值使用pathvar 如果是前端视图层传值最好不适用pathvar
    @ResponseBody
    public String pathvar(@PathVariable("abc")String value){return value;}

    //@ModelAttribute
    @RequestMapping("/model")
    @ResponseBody
    //model对象会将form表单中带有name中所有值打包,注意点表单里面的name属性名字要保证一样  @ModelAttribute可以省略 默认使用该方式
    public User model(User user){return user;}}
  • 服务端往视图层页面传值的三种常用方式

  • @Controller
    public class ResponseController {
        //内置对象传值,四种作用域对象
        @RequestMapping("/index")
        public String returnToIndex(@RequestParam(value = "username",required = false) String name,@RequestParam(value = "password",required = false) String pwd, HttpServletRequest request, Model model){
            request.setAttribute("user",name);
            request.setAttribute("pwd",pwd);
    
            request.getSession().setAttribute("usersession",name);
            request.getSession().setAttribute("pwdsession",pwd);
    
            ServletContext servletContext = request.getSession().getServletContext();//比Session保存时间更久,是要tomcat不停随时都可以取到
            servletContext.setAttribute("servletcontextuser",name);
            servletContext.setAttribute("servletcontextpwd",pwd);
            Enumeration enumeration = servletContext.getAttributeNames();
            while (enumeration.hasMoreElements()){
                System.out.println("key:"+enumeration.nextElement());
               System.out.println("vlaue"+servletContext.getAttribute(enumeration.nextElement().toString()));
            }
            System.out.println(request.getAttribute("user"));
            System.out.println(request.getSession().getAttribute("usersession"));
    
            User user =new User();
            user.setId(11);
            user.setUsername("Sandy");
            user.setPassword("12131");
    
            model.addAttribute(user);//默认的参数名为类名首字母小写
    
            model.addAttribute("modeluser",name);
            model.addAttribute("modelpwd",pwd);
            return "welcome";}
        
         //通过springmvc内置对象model
        @RequestMapping("/nextindex")
        public String returnToIndex(HttpServletRequest request,Model model){return "next";}
    
         //springmvc ModelAndView
        @RequestMapping("/modelandview")
        public ModelAndView modelAndView(@RequestParam(value = "username",required = false) String name,
                                         @RequestParam(value = "password",required = false) String pwd){
            ModelAndView modelAndView = new ModelAndView("modelandview");
            modelAndView.addObject("modelviewuser",name);
            modelAndView.addObject("modeviewpwd",pwd);
            return modelAndView;}}
    
  • ResponseController需要一个实体类(省略了get与set方法)

  • @Component
    public class User {
        private String username;
        private String password;
        private int id;
        private String remark;}
    
    9.视图模板技术(Freemarker)

    视图模板技术有两种Themleaf , Freemarker

    1.导入freemarker依赖

    
           org.springframework.boot
           spring-boot-starter-freemarker
    
    

    2.配置freemarker参数

    spring.freemarker.suffix=.文件后缀
    

    3.基本与复杂数据类型书写

    字符串类型:${"this is string"}
    数值类型:${123}
    布尔类型:${true?c} or ${false?c}
    

    利用标签的创建变量并给变量赋值:

    <#assign str="string"/>					${str}   					<---string--->
    <#assign str1>string1			${str1}						<---string1-默认为字符串类型--->
    <#assign intval=12/>					${intval}					<---12--->
    

    列表类型索引获取:

    <#assign listval=["abc","def","hij"]/>
    
    ${listval[0]}
    ${listval[1]}
    ${listval[2]}
    <#list listval as i><---遍历查询---> ${i}
    <#list listval[1..2] as i> ${i}

    String类型索引:

    <#assign stringlist="abcdefghijklmn"/>
    ${stringlist[3]}<---单个查询---> ${stringlist[5]} ${stringlist[7]}
    ${stringlist[2..5]}
    <---列表范围取值--->

    Hash类型遍历:

    <#assign mapval={"name":"mike","age":18}/>
    <#list mapval?keys as key><---遍历查询---> ${key}==>${mapval[key]}
    ${mapval.age}
    <---单个查询--->

    字符串拼接:

    ${str+str1}								<---stringstring1--->
    string2${str}							<---stringstring--->
    

    加减乘除:

    ${intval+intval}						<---24--->
    ${intval-intval}						<---0--->
    ${intval*intval}						<---144--->
    ${intval/intval}						<---1--->
    

    控制流语句:

    gt大于,lt小于,gte大于等于,lte小于等于

    <#if mapval.age gte 18>成年
    
    <#if user??><---双问号为判断是否为空--->
    
    <#if (mapval.age>=18)>成年
    <#else>未成年
    
        
    <#if (mapval.age=20)>
    

    正好20岁

    <#elseif (mapval.age>=18)>

    成年了

    <#else>

    未成年


    <#switch mapval.age>
    <#case 10> 

    10

    <#break> <#case 20>

    20

    <#break> <#case 18>

    18

    <#break> <#default>

    创建一个5*5的表格

    
        <#list 1..5 as i>
        
            <#list 1..5 as j>
            
    sss

    方法

    <#function addxy x y>
    <#return x+y>
    
        
    调用方法运算${addxy(10,20)}<---30--->
    <#function addxy x>
    局部变量<#local sum=0>
    <#list 1..x as i>
    <#local sum = sum+i>
    
    <#return sum>
    
        
    ${addxy(5)!}感叹号用来规避空值<---15--->
    
    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/337401.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号