首页 > 编程语言 > 详细

012-Spring Boot web【一】创建、请求、使用jsp、freemarker,tomcat、jetty

时间:2018-02-01 23:55:57      阅读:502      评论:0      收藏:0      [点我收藏+]

一、项目搭建

同:http://www.cnblogs.com/bjlhx/p/8324971.html

1)新建maven项目→使用默认配置即可

技术分享图片

定义好项目名称等

2)修改jdk版本

技术分享图片
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties>
View Code

3)增加spring-boot-dependencies

技术分享图片
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.9.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
View Code

4)在pom的dependencies增加依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

不需要增加spring-boot-starter包,在spring-boot-starter-web中已经包含了

5)增加main方法启动程序即可

技术分享图片
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}
View Code

可增加一个示例,增加一个UserController

技术分享图片
@Controller
public class UserController {

    @RequestMapping("/user/home")
    @ResponseBody
    public String home() {
        return "user home";
    }

}
View Code

访问:http://127.0.0.1:8080/user/home即可

二、基本配置

1.启动端口

默认配置文件在src/main/resource下的application.properties

服务启动端口

server.port=80

2.请求路径与方式

    @RequestMapping(value = "/user/home", method = RequestMethod.GET)
    @ResponseBody
    public String home() {
        return "user home";
    }

以前的方式使用RequestMapping

在4.3以后提供以下方式

技术分享图片
    @GetMapping(value = "/user/show")
    @ResponseBody
    public String show() {
        return "user show";
    }

    @PostMapping(value = "/user/create")
    @ResponseBody
    public String create() {
        return "user create";
    }
View Code

即:GetMapping、PostMapping

3、获取请求参数

3.1、获取请求参数RequestParam

    @PostMapping(value = "/user/create")
    @ResponseBody
    public String create(@RequestParam(value="username",defaultValue="admin",required=false) String username,@RequestParam("password")String password) {
        return "user create,username="+username+";password="+password;
    }

3.2、获取url参数@PathVariable

    @GetMapping(value = "/user/{id}")
    @ResponseBody
    public String display(@PathVariable("id") String id) {
        return "user display,id="+id;
    }

3.3、支持注入Servletapi,HttpServletRequest

    @GetMapping(value = "/user/ip")
    @ResponseBody
    public String edit(HttpServletRequest req) {
        return "user edit " + req.getRemoteHost();
    }

4、RestController

为了简化每一个都加@ResponseBody

表明了当前Controller的方法返回值可以直接作为ResponseBody输出。

三、Spring boot中

1.使用jsp

1.1、增加maven:tomcat-embed-jasper;【版本可以根据具体是否添加】

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

1.2、增加配置

spring.mvc.view.prefix=/WEB-INF/jsp
spring.mvc.view.suffix=.jsp/

1.3、增加Controller

技术分享图片
@Controller
public class LoginController {
    @PostMapping("/login")
    public String login(@RequestParam("username") String username, @RequestParam("password") String password) {
        if (username.equals(password)) {
            return "/ok";
        }
        return "/fail";
    }
}
View Code

注:方法直接返回String,就代表路径+jsp页面名【不含扩展名】

注意:注解使用Controller,不是RestController

1.4、增加jsp页面

位置:src/main/webapp下简历WEB-INF/jsp文件夹

ok.jsp

技术分享图片
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>ok
</body>
</html>
View Code

fail.jsp

技术分享图片
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
fail
</body>
</html>
View Code

2、给jsp传递参数

java端,Model 的addAttribute,相当于request.setAttribute

技术分享图片
    @GetMapping("/login")
    public String loginIndex(Model model) {
        model.addAttribute("username","root");
        return "/login";
    }
View Code

jsp

技术分享图片
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${username}
</body>
</html>
View Code

3、模板freemarker

注:尽量先注释掉jsp的设置,pom,配置文件设置

3.1、增加pom

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

3.2、默认位置于classpath的templates下

reg.ftl

<h1>reg page</h1>

可以查看spring-boot-autoconfigure包,在org.springframework.boot.autoconfigure.freemarker.FreeMarkerProperties中查看

技术分享图片
@ConfigurationProperties(prefix = "spring.freemarker")
public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties {

    public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";

    public static final String DEFAULT_PREFIX = "";

    public static final String DEFAULT_SUFFIX = ".ftl";
View Code

路径:classpath:/templates,默认扩展名:.ftl

模板路径配置:spring.freemarker.templateLoaderPath=classpath:/ftl

4、模板freemarker参数传递

同2一致

5、web容器

5.1、默认是tomcat,更换jetty

排除tomcat。将web修改

技术分享图片
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
View Code

增加jetty

技术分享图片
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
View Code

注意查看

spring-boot-autoconfigure包,在org.springframework.boot.autoconfigure.web.ServerProperties中查看,如何配置web容器配置

server.port=8080
server.contextPath=/

注意:善用contextPath做虚拟目录

 

012-Spring Boot web【一】创建、请求、使用jsp、freemarker,tomcat、jetty

原文:https://www.cnblogs.com/bjlhx/p/8372584.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!