# nymph **Repository Path**: NymphX/nymph ## Basic Information - **Project Name**: nymph - **Description**: 我写的第一个框架 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-11-14 - **Last Updated**: 2021-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Quick Start #### 配置文件 ##### * 默认加载classpath下的所有nymph开头的xml或者yml配置文件 ###### nymph-demo.yml配置文件 ```yml webConfig: #注意层次 每个子的配置用一个空格或者tab缩进 port: 9900 #内嵌tomcat可以在此设置端口号。对读取 web.xml的tomcat来说这项配置没用, 只能自己去server.xml配置 contextPath: '' #对于内嵌tomcat来说他就表示项目名, 对于读取web.xml的tomcat来说这个配置没有任何意义 urlPattern: / #表示的是你希望让Nymph处理哪些url, / 和 /*表示所有 区别是 / 不会截取到.jsp后缀的url suffix: .jsp #方法返回值路径的后缀 prefix: /WEB-INF #同上, 前缀 exclutions: #想放行的静态资源 也可以直接放行整个文件夹 如 /css/* /js/* 这种格式 - '*.css' - '*.ico' - '*.jpg' filters: - com.nymph.filter.TestFilter@*.do # @后面的表示拦截的urlPattern 不设置的话默认是/* 拦截所有 #异常处理器配置 配置的类需要实现ExceptionHandler接口 exceptionHandler: com.nymph.exception.impl.ExceptionHandlerImpl scanner: #使用了@Beans @HTTP 相关注解的必须得配置这个, 让容器能扫描到你的类 - com.nymph.web component: #将给出的类交给容器管理 - com.nymph.bean.Woman - com.nymph.bean.Man ``` ###### nymph-demo.xml配置文件 ```xml ``` #### HttpBean代码实例 ```java @HTTP("/start") // 表示此类是一个Http请求的映射类 @Starter // 启动类必须标注此注解 public class HelloWorld { // 自动注入Man的实例, 如果容器中存在 private @Injection Man man; // 只允许Get请求访问此方法 @UrlHolder表示url上声明的变量@test @GET("/get/@test") public String test(@UrlHolder("test") String field, Transfer transfer) { // transfer是内置的类, 用来将数据存到servlet的各作用域(request, session) transfer.ofRequest("q", man); // 表示转发到/WEB-INF/index.jsp // 当返回值为"->/index"时表示重定向 return "/index"; } // 只允许Post请求访问此方法, @JSON表示返回的对象会被转换为json字符串响应到页面 @POST("/post/@test") @JSON public Man test2(@UrlHolder String test) { System.out.println(test); return man; } // 文件上传 @GET("/upload") public void test3(Multipart multipart) throws IOException { // file表示页面input标签的name FileInf fileInf = multipart.getFileInf("file"); // 将文件写入指定的位置 fileInf.writeTo("c:/data/demo.jpg"); } // 文件下载 @GET("/downloads") public void test4(Share share) { share.shareFile("C:/hello.jpg"); } // 内嵌tomcat的形式启动应用 public static void main(String[] args) { MainStarter.start(HelloWorld.class); } } ``` #### 通过HttpChannel获取HttpBean发出的序列化对象 ```java // 服务端 @HTTP("/demo") @Starter public class HttpTest { // 关于序列化对象的传输 @Serialize注解表示返回的对象将被序列化到响应头中(返回的对象需要实现Serializable接口) @GET("/class") @Serialize public Man test() { // 发送一个序列化对象 Man man = new Man(); man.setName("张学友"); return man; } public static void main(String[] args) { MainStarter.start(HttpTest.class); } } // 客户端 public class Test { public static void main(String[] args) { HttpChannel channel = new HttpChannel("127.0.0.1", 9900); Man man = (Man)channel.getObject("/demo/class", Pattern.GET); System.out.println(man.getName()); // 此处man的name为 "张学友" } } ``` * author: 刘洋(QQ: 564778568) * author: 梁天东(QQ: 1275976240) * author: very storage