{"id":16903819,"url":"https://github.com/looly/hulu","last_synced_at":"2025-03-22T10:31:05.714Z","repository":{"id":15981241,"uuid":"18724238","full_name":"looly/hulu","owner":"looly","description":"A MVC framwork","archived":false,"fork":false,"pushed_at":"2025-03-17T17:05:21.000Z","size":381,"stargazers_count":19,"open_issues_count":1,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-18T10:21:28.744Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/looly.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-04-13T07:51:52.000Z","updated_at":"2024-10-17T04:51:12.000Z","dependencies_parsed_at":"2022-08-31T09:41:45.010Z","dependency_job_id":"bfb29366-5a72-4114-9307-dececafac990","html_url":"https://github.com/looly/hulu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/looly%2Fhulu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/looly%2Fhulu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/looly%2Fhulu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/looly%2Fhulu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/looly","download_url":"https://codeload.github.com/looly/hulu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244943717,"owners_count":20536290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T18:28:53.537Z","updated_at":"2025-03-22T10:31:05.270Z","avatar_url":"https://github.com/looly.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"hulu\r\n====\r\n\r\nA MVC \r\n一个MVC框架\r\n\r\n## How to use\r\n\r\n### 1. 引入依赖\r\n现在Hulu MVC框架已经上传至Maven中央库，你可以在pom.xml中加入以下信息引入项目依赖包。\r\n\r\n```xml\r\n\u003cdependency\u003e\r\n\t\u003cgroupId\u003ecom.xiaoleilu\u003c/groupId\u003e\r\n\t\u003cartifactId\u003ehulu\u003c/artifactId\u003e\r\n\t\u003cversion\u003eX.X.X\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n```\r\n\r\n### 2. 加入配置文件\r\n在`src/main/resources/config/`下加入Hulu.setting文件，这个是Hulu框架的配置文件，配置内容请见[https://github.com/looly/hulu/blob/master/doc/config/hulu-example.setting](https://github.com/looly/hulu/blob/master/doc/config/hulu-example.setting)\r\n\r\n### 3. 加入web.xml文件\r\n按理说Servlet3之后不再需要web.xml，不过一些设置依旧需要这个文件，并且Hulu必须使用Servlet3做为其基础，在`/src/main/webapp/WEB-INF/`下放入web.xml文件，内容如下：\r\n\r\n```xml\r\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\r\n\u003cweb-app version=\"3.0\" xmlns=\"http://java.sun.com/xml/ns/javaee\"\r\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \r\n\thttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd\"\u003e\r\n\t\r\n\u003c/web-app\u003e\r\n```\r\n\r\n注：在Maven web项目中，必须有这个web.xml文件才会被认为是一个web项目。\r\n\r\n### 4.添加逻辑处理类Action\r\n在`Hulu.setting`中`action.package`设置好需要扫描的包路径（这里设置的包会被识别为Action类，用于处理用户请求的逻辑），如果你设置了`action.suffix`，那只会扫描指定后缀的逻辑处理类。\r\n\r\n假如你的Action类叫做UserAction（扫描包后缀为Action），里面有个无参的public方法叫做create，那你请求`/user/create`时就会调用这个方法。在这个方法中你便可以使用`Request`类提取请求的参数，使用`Response`类设置响应的头和Cookie，使用`Render`返回内容给客户端。\r\n\r\n### 5. 启动\r\n项目写完后你可以使用`mvn package`命令打包项目并放入Servlet容器中运行，如果是测试项目功能，只需在pom.xml中引入Tomcat7插件既可使用`mvn tomcat7:run`测试运行。\r\n\r\n```\r\n\u003cbuild\u003e\r\n\t\u003cplugins\u003e\r\n\t\t\u003cplugin\u003e\r\n\t\t\t\u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\r\n\t\t\t\u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\r\n\t\t\t\u003cversion\u003e3.1\u003c/version\u003e\r\n\t\t\t\u003cconfiguration\u003e\r\n\t\t\t\t\u003csource\u003e1.7\u003c/source\u003e\r\n\t\t\t\t\u003ctarget\u003e1.7\u003c/target\u003e\r\n\t\t\t\u003c/configuration\u003e\r\n\t\t\u003c/plugin\u003e\r\n\t\t\u003cplugin\u003e\r\n\t\t\t\u003cgroupId\u003eorg.apache.tomcat.maven\u003c/groupId\u003e\r\n\t\t\t\u003cartifactId\u003etomcat7-maven-plugin\u003c/artifactId\u003e\r\n\t\t\t\u003cversion\u003e2.2\u003c/version\u003e\r\n\t\t\u003c/plugin\u003e\r\n\t\u003c/plugins\u003e\r\n\t\u003cfinalName\u003ehuludemo\u003c/finalName\u003e\r\n\u003c/build\u003e\r\n```\r\n\r\n### 6. 框架的Demo项目\r\n此MVC框架有一个简单的样例程序，请访问[https://github.com/looly/huludemo](https://github.com/looly/huludemo)查看。\r\n\r\n### 7. 遇到问题？\r\n在[https://github.com/looly/hulu/issues](https://github.com/looly/hulu/issues)给我提出意见和建议，欢迎参与讨论。\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flooly%2Fhulu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flooly%2Fhulu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flooly%2Fhulu/lists"}