初识Play Framework框架和第一个Java play web项目的创建

文章目录

  • 初识Play Framework框架和第一个Java play web项目的创建
    • 一、简介
      • 特点
      • 架构
      • 开发流程
      • 示例代码
      • 总结
    • 二、创建第一个Java play web项目
      • 1、下载play框架,配置系统环境变量(jdk的安装就不再说了)
    • 2、检查play的版本和创建第一个play项目
    • 3、将项目通过idea或eclipse运行

初识Play Framework框架和第一个Java play web项目的创建

一、简介

Play Framework 是一个轻量级、高性能且高度可扩展的 Java 和 Scala Web 开发框架。它旨在简化现代 Web 应用程序的开发过程,并且支持实时双向通信,使其成为构建实时 Web 应用的理想选择。以下是 Play Framework 的一些主要特点和概念:
中文文档https://play.readthedocs.io/zh-cn/latest/

特点

  1. 轻量级:

    • Play 不依赖于服务器容器,这意味着它可以独立运行,并且易于部署。
    • 它不需要复杂的配置,开箱即用。
  2. 非阻塞架构:

    • Play 采用异步和非阻塞 I/O,可以处理大量并发连接而不牺牲性能。
    • 这使得 Play 成为高负载下高效处理 HTTP 请求的理想选择。
  3. 热重载:

    • Play 支持代码更改后自动重启应用,这在开发过程中非常有用,因为它可以即时看到更改的效果。
    • 这有助于提高开发效率。
  4. RESTful 架构:

    • Play 鼓励 RESTful 设计原则,使构建 RESTful Web 服务变得简单。
    • 它提供了强大的路由机制和控制器模型。
  5. 模板引擎:

    • Play 自带一个简洁高效的内置模板引擎,同时也支持其他的模板引擎,如 Thymeleaf 或 Mustache。
  6. 集成测试:

    • Play 提供了一套完整的测试工具,包括单元测试、功能测试和集成测试,使得测试 Web 应用变得更加简单。
  7. 多语言支持:

    • Play 支持 Java 和 Scala 作为开发语言,这为开发者提供了更多的选择。
  8. 社区和生态系统:

    • Play 拥有一个活跃的社区和丰富的插件生态系统,可以帮助开发者解决常见的开发问题。

架构

Play Framework 采用了 MVC(Model-View-Controller)架构模式,其中:

  • Model (模型): 负责应用程序的数据逻辑。
  • View (视图): 展示数据给用户。
  • Controller (控制器): 控制应用程序的流程和数据流。

开发流程

  1. 项目创建:

    • 使用 Play CLI 或者通过 IDE 插件创建一个新的 Play 项目。
  2. 路由配置:

    • conf/routes 文件中定义 URL 路由规则。
  3. 控制器编写:

    • 编写控制器类来处理 HTTP 请求。
  4. 视图渲染:

    • 使用模板引擎(如 Play 自带的模板引擎)来渲染视图。
  5. 数据库交互:

    • 使用 Ebean ORM 或者其他持久化技术来与数据库交互。
  6. 测试:

    • 编写测试用例以确保应用的稳定性和质量。
  7. 部署:

    • Play 支持多种部署方式,包括内嵌 Jetty 服务器、Apache Tomcat 或者其他 Servlet 容器。

示例代码

下面是一个简单的 Play 应用示例,展示了如何定义一个路由和一个控制器方法:

// routes 文件中的定义
GET     /hello       controllers.Application.sayHello(String name)// Application.java 控制器类
package controllers;import play.mvc.Controller;
import play.mvc.Result;public class Application extends Controller {public static Result sayHello(String name) {return ok("Hello, " + name + "!");}
}

总结

Play Framework 以其轻量级、高性能和易于使用的特性受到开发者的欢迎。它适合于构建现代化的 Web 应用程序,特别是那些需要实时功能的应用。无论您是使用 Java 还是 Scala,Play 都是一个值得考虑的优秀框架。

二、创建第一个Java play web项目

1、下载play框架,配置系统环境变量(jdk的安装就不再说了)

全版本官方下载链接:https://playframework.com.cn/releases,选择要用的play版本进行下载,我这里下载的是play1.3.4
在这里插入图片描述
下载后解压到非中文路径下,然后在系统变量中配置path
在这里插入图片描述

2、检查play的版本和创建第一个play项目

在任意位置打开命令行,输入play,显示如下图及说明play框架的环境变量配置成功

在这里插入图片描述

在你想要创建项目的路径下打开命令行,输入play new app1(任意项目名)命令创建项目,然后会发现该路径下出现了app1的文件夹

在这里插入图片描述

在这里插入图片描述

输入play run app1直接启动项目

3、将项目通过idea或eclipse运行

进入项目目录内输入play idealize

在这里插入图片描述
将生成的app1.ipr拖入idea或设置.ipr文件的默认打开程序为idea双击即可通过idea打开play项目

在这里插入图片描述
进入idea后,配置启动程序,启动项目(jdk一定要配置正确)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

启动项目

在这里插入图片描述
在这里插入图片描述

访问浏览器9000端口即可

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3268406.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【NoSQL数据库】Redis知识小册

一、缓存穿透 缓存穿透是先查Redis,发现缓存中没有数据,再查数据库。然而,如果查询的数据在数据库中也不存在,那么每次查询都会绕过缓存,直接落到数据库上。 解决方案一、缓存空数据 查询Redis缓存:首先查…

Java泛型的介绍和基本使用

什么是泛型 ​ 泛型就是将类型参数化,比如定义了一个栈,你必须在定义之前声明这个栈中存放的数据的类型,是int也好是double或者其他的引用数据类型也好,定义好了之后这个栈就无法用来存放其他类型的数据。如果这时候我们想要使用这…

Codeforces 903 div3 A-F

A 题目分析 数据范围很小&#xff0c;暴力枚举即可&#xff0c;然后给字符串x的长度设置一个上限&#xff0c;我设了50&#xff0c;因为n*m<25&#xff0c;多一倍够用了 C代码 #include<iostream> using namespace std; void solve(){int n,m;string x,s;cin>>…

基于RS485的Modbus协议

RS485&#xff1a;用来传输数据&#xff0c;RS485是一种差分传输的串行通信标准&#xff0c;以其强大的抗干扰能力、长距离传输和多点通信能力&#xff0c;在工业控制领域得到广泛应用。RS485使用一对差分信号线&#xff08;A和B&#xff09;来传输数据&#xff0c;差分信号能有…

eclipse ui bug

eclipse ui bug界面缺陷&#xff0c;可能项目过多&#xff0c;特别maven项目过多&#xff0c;下载&#xff0c;自动编译&#xff0c;加载更新界面异常 所有窗口死活Restore不回去了 1&#xff09;尝试创建项目&#xff0c;还原界面&#xff0c;失败 2&#xff09;关闭所有窗口&…

Django学习(二)

get请求 练习&#xff1a; views.py def test_method(request):if request.method GET:print(request.GET)# 如果链接中没有参数a会报错print(request.GET[a])# 使用这个方法&#xff0c;当查询不到参数时&#xff0c;不会报错而是返回你设置的值print(request.GET.get(c,n…

winrar安装好后,鼠标右键没有弹出解压的选项

本来安装挺好的&#xff0c;可以正常使用&#xff0c;有天我把winrar相关的文件挪了个位置&#xff0c;就不能正常使用了。 然后我去应用里面找&#xff0c;找到应用标识了&#xff0c;但是找不到对应的文件夹&#xff08;因为我挪到另外一个文件夹里了&#xff09;。 于是我找…

语言转文字

因为工作原因需要将语音转化为文字&#xff0c;经常搜索终于找到一个免费的好用工具&#xff0c;记录下使用方法 安装Whisper 搜索Colaboratory 右上方链接服务 执行 !pip install githttps://github.com/openai/whisper.git !sudo apt update && sudo apt install f…

Android 软键盘挡住输入框

Android原生输入法软键盘挡住输入框,网上各种解法,但不起效。 输入框都是被挡住了,第二张图的小点,实际就是输入法的光标。 解法: packages\inputmethods\LatinIME\java\res\values-land config.xml <!-- <fraction name="config_min_keyboard_height"&g…

pikachu靶场之目录遍历、敏感信息泄露

一、目录遍历 漏洞概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量&#xff0c;从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时&#xff0c;便会将请求的这个文件的值(比如文件名称)传递到后台&#xff0c;后台再执行其对应的文件。 在这个过…

如何评价估计量的好坏

目录 三大方法 概念 无偏性 如何计算估计量的无偏性&#xff1f; 步骤 有效性 有效性在不同类型的数据分析中如何评估&#xff1f; 步骤 一致性 一致性原则在实际应用中的挑战有哪些&#xff1f; 挑战 在大样本情况下&#xff0c;如何准确测量估计量的一致性&#xf…

AcWing-差分矩阵

insert函数影响范围&#xff0c;在b差分数组这样操作影响到是a里面的&#xff0c;所以下图的矩阵表示的是a数组 b[x1][y1]c;会导致a里面仅绿色范围的a[i][j]c b[x1][y21]-c;会导致a里面仅黄色范围的a[i][j]-c b[x21][y1]-c;会导致a里面仅蓝色范围的a[i][j]-c b[x21][y21]c;会导…

SQL Server 设置端口号:详细步骤与注意事项

目录 一、了解SQL Server端口号的基础知识 1.1 默认端口号 1.2 静态端口与动态端口 二、使用SQL Server配置管理器设置端口号 2.1 打开SQL Server配置管理器 2.2 定位到SQL Server网络配置 2.3 修改TCP/IP属性 2.4 重启SQL Server服务 三、注意事项 3.1 防火墙设置 3…

数据结构与算法-归并排序

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、归并排…

MySQL笔记3——高级数据查询语句DQL

多表联查 多表联查可以通过连接运算实现&#xff0c;即将多张表通过主外键关系关联在一起进行查询。下图提供了多表联查 时用到的数据库表之间的关系。 等值查询和非等值查询 非等值查询&#xff1a;SELECT * FROM 表1&#xff0c;表2 等值查询&#xff1a;SELECT * FROM 表…

Oracle对比两表数据的不一致

MINUS 基本语法如下 [SQL 语句 1] MINUS [SQL 语句 2];举个例子&#xff1a; select 1 from dual minus select 2 from dual--运行结果 1-------------------------------- select 2 from dual minus select 1 from dual--运行结果 2所以&#xff0c;如果想找所有不一致的&a…

Codeforces Round 962 (Div. 3)

链接 C题&#xff1a; 思路&#xff1a; 直接暴力求每个字母的前缀和&#xff0c;对于区间l&#xff0c;r的最小操作就是区间不同数的一半&#xff0c;因为可以把一个数变成另一个不一样的数&#xff0c;一下抵消两个。 #include<bits/stdc.h> using namespace std; //…

苹果CMS V10萌芽采集插件Pro v10.7.3

苹果CMS V10萌芽采集插件Pro v10.7.3 插件下载:萌芽采集插件Pro v10.7.3.zip 使用说明: 将addons文件和static文件放到你苹果cms程序的根目录并覆盖&#xff0c; 在登录后台在应用-应用市场启用。http://你的域名/admin.php/admin/mycj/union.html

等保测评练习卷19

等级保护初级测评师试题19 姓名&#xff1a; 成绩&#xff1a; 判断题&#xff08;10110分&#xff09; 1.为了有效处理等级保护对象运行过程中可能发生的重大安全事件&#xff0c;需要在统一的框架下制定针对不同安全事件的应急预…

FPGA开发——呼吸灯的设计

一、原理 呼吸灯的原理主要基于‌PWM&#xff08;脉冲宽度调制&#xff09;技术&#xff0c;通过控制LED灯的占空比来实现亮度的逐渐变化。这种技术通过调整PWM信号的占空比&#xff0c;即高电平在一个周期内所占的比例&#xff0c;来控制LED灯的亮度。当占空比从0%逐渐变化到1…