在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:pippo-java/pippo开源软件地址:https://github.com/pippo-java/pippo开源编程语言:Java 98.6%开源软件介绍:Micro Java Web FrameworkIt's an open source (Apache License) micro web framework in Java, with minimal dependencies and a quick learning curve. Sample code1. Routes approachFirst we must create an Application and add some routes: public class BasicApplication extends Application {
@Override
protected void onInit() {
// send 'Hello World' as response
GET("/", routeContext -> routeContext.send("Hello World"));
// send a file as response
GET("/file", routeContext -> routeContext.send(new File("pom.xml")));
// send a json as response
GET("/json", routeContext -> {
Contact contact = createContact();
routeContext.json().send(contact);
});
// send xml as response
GET("/xml", routeContext -> {
Contact contact = createContact();
routeContext.xml().send(contact);
});
// send an object and negotiate the Response content-type, default to XML
GET("/negotiate", routeContext -> {
Contact contact = createContact();
routeContext.xml().negotiateContentType().send(contact);
});
// send a template with name "hello" as response
GET("/template", routeContext -> {
routeContext.setLocal("greeting", "Hello");
routeContext.render("hello");
});
}
private Contact createContact() {
return new Contact()
.setId(12345)
.setName("John")
.setPhone("0733434435")
.setAddress("Sunflower Street, No. 6");
}
} where public class Contact {
private int id;
private String name;
private String phone;
private String address;
// getters and setters
} The second step is to choose your favorite server,
template engine
and content type engine. <dependency>
<groupId>ro.pippo</groupId>
<artifactId>pippo-core</artifactId>
<version>${pippo.version}</version>
</dependency>
<dependency>
<groupId>ro.pippo</groupId>
<artifactId>pippo-jetty</artifactId>
<version>${pippo.version}</version>
</dependency>
<dependency>
<groupId>ro.pippo</groupId>
<artifactId>pippo-freemarker</artifactId>
<version>${pippo.version}</version>
</dependency>
<dependency>
<groupId>ro.pippo</groupId>
<artifactId>pippo-jackson</artifactId>
<version>${pippo.version}</version>
</dependency> The last step it's to start Pippo with your application as parameter: public class BasicDemo {
public static void main(String[] args) {
Pippo pippo = new Pippo(new BasicApplication());
pippo.start();
}
} Pippo launches the embedded web server (found in your classpath) and makes the application available on port
2. Controllers approachDefine controller(s): @Path("/contacts")
@Logging
public class ContactsController extends Controller {
private ContactService contactService;
public ContactsController() {
contactService = new InMemoryContactService();
}
@GET
@Named("index")
// @Produces(Produces.HTML)
@Metered
@Logging
public void index() {
// inject "user" attribute in session
getRouteContext().setSession("user", "decebal");
// send a template with name "contacts" as response
getResponse()
.bind("contacts", contactService.getContacts())
.render("contacts");
}
@GET("/uriFor/{id: [0-9]+}")
@Named("uriFor")
@Produces(Produces.TEXT)
@Timed
public String uriFor(@Param int id, @Header String host, @Session String user) {
System.out.println("id = " + id);
System.out.println("host = " + host);
System.out.println("user = " + user);
Map<String, Object> parameters = new HashMap<>();
parameters.put("id", id);
String uri = getApplication().getRouter().uriFor("api.get", parameters);
return "id = " + id + "; uri = " + uri;
}
@GET("/api")
@Named("api.getAll")
@Produces(Produces.JSON)
@NoCache
public List<Contact> getAll() {
return contactService.getContacts();
}
@GET("/api/{id: [0-9]+}")
@Named("api.get")
@Produces(Produces.JSON)
public Contact get(@Param int id) {
return contactService.getContact(id);
}
} @Path("/files")
public class FilesController extends Controller {
@GET
public void index() {
// send a template with name "files" as response
getRouteContext().render("files");
}
@GET("/download")
public File download() {
// send a file as response
return new File("pom.xml");
}
@POST("/upload")
@Produces(Produces.TEXT)
public String upload(FileItem file) {
// send a text (the info about uploaded file) as response
// return file.toString();
return new StringBuilder()
.append(file.getName()).append("\n")
.append(file.getSubmittedFileName()).append("\n")
.append(file.getSize()).append("\n")
.append(file.getContentType())
.toString();
}
} Add controller(s) in your application: public class BasicApplication extends ControllerApplication {
@Override
protected void onInit() {
addControllers(ContactsController.class); // one instance for EACH request
// OR
addControllers(new ContactsController()); // one instance for ALL requests
addControllers(FilesController.class);
}
} Don't forget that the DocumentationDocumentation is available on pippo.ro DemoDemo applications are available on pippo-demo |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论