TODAYWEB是一个轻量级Web框架
安装<depedecy><groupId>c.taketoday</groupId><artifactId>today-web</artifactId><versio>2.3.6.RELEASE</versio></depedecy>MaveCetral案例DEMO文档Wiki使用说明通过 @Cotroller @RestCotroller 配置控制器
//@Cotroller@RestCotroller@RequestMappig("/users")publicclassIdexCotroller{}配置请求
@GET("idex")@POST("post")@PUT("articles/{id}")......@RequestMappig("/users/{id}")@RequestMappig(value="/users/**",method={RequestMethod.GET})@RequestMappig(value="/users/*.html",method={RequestMethod.GET})@RequestMappig(value={"/idex.actio","/idex.do","/idex"},method=RequestMethod.GET)@Iterceptor({LogiIterceptor.class,...})public(Strig|List<?>|Set<?>|Map<?>|void|File|Image|...)\\w+(request,request,sessio,servletCotext,str,it,log,byte,short,boolea,@Sessio("logiUser"),@Header("User-Aget"),@Cookie("JSESSIONID"),@PathVariable("id"),@RequestBody("users"),@Multipart("uploadFiles")MultipartFile[]){service...retur</>;}自定义参数转换器
@ParameterCoverterpublicclassDateCoverterimplemetsCoverter<Strig,Date>{@OverridepublicDatedoCovert(Strigsource)throwsCoversioExceptio{...}}也可以通过xml文件配置简单视图,静态资源,自定义视图解析器,文件上传解析器,异常处理器,参数解析器
<?xmlversio="1.0"ecodig="UTF-8"?><!DOCTYPEWeb-CofiguratioPUBLIC"-//TODAYBLOG//Web-CofiguratioDTD2.0//CN""https://taketoday.c/framework/web/dtd/web-cofiguratio-2.3.3.dtd"><Web-Cofiguratio><cotrollerprefix="/error/"><actioresource="400"ame="BadRequest"status="400"/><actioresource="403"ame="Forbidde"status="403"/><actioresource="404"ame="NotFoud"status="404"/><actioresource="500"ame="ServerIsBusy"status="500"/><actioresource="405"ame="MethodNotAllowed"status="405"/></cotroller><cotroller><actioresource="redirect:https://pipe.b3log.org/blogs/Today"ame="today-blog-pipe"/><actioresource="redirect:https://taketoday.c"ame="today"/><actioresource="redirect:https://github.com"ame="github"/><actioresource="redirect:/logi"ame="logi.do"/></cotroller><cotrollerclass="c.taketoday.web.demo.cotroller.XMLCotroller"ame="xmlCotroller"prefix="/xml/"><actioame="obj"method="obj"/><actioame="test"resource="test"method="test"/></cotroller></Web-Cofiguratio>登录实例
@CotrollerpublicclassUserCotroller{/*<cotrollerprefix="/WEB-INF/view/"suffix=".ftl"><actioresource="logi"ame="logi"/><actioresource="register"ame="register"/></cotroller>*///@GET("logi")@RequestMappig(value="/logi",method=RequestMethod.GET)publicStriglogi(){retur"/logi/logi";//支持jsp,FreeMarker,Thymeleaf,自定义视图}@Logger("登录")//@POST("/logi")//@RequestMappig(value="/logi",method=RequestMethod.POST)@ActioMappig(value="/logi",method=RequestMethod.POST)publicStriglogi(HttpSessiosessio,RedirectModelredirectModel,@ValidUseruser,Errorserror){if(error.hasErrors()){System.err.pritl(error.getAllErrors());redirectModel.attribute("msg",error.getAllErrors().toStrig());retur"redirect:/logi";}Userlogi=userService.logi(user);if(logi==ull){redirectModel.attribute("userId",user.getUserId());redirectModel.attribute("msg","登录失败");retur"redirect:/logi";}redirectModel.attribute("msg","登录成功");sessio.setAttribute(USER_INFO,logi);retur"redirect:/user/ifo";}}文件下载,支持直接返回给浏览器图片
@RequestMappig(value={"/dowload"},method=RequestMethod.GET)publicFiledowload(Strigpath){returewFile(path);}@GET("/display")publicfialBufferedImagedisplay(HttpServletResposerespose)throwsIOExceptio{respose.setCotetType("image/jpeg");returImageIO.read(ewFile("D:/taketoday.c/webapps/upload/logo.pg"));}@GET("captcha")publicfialBufferedImagecaptcha(HttpServletRequestrequest)throwsIOExceptio{BufferedImageimage=ewBufferedImage(IMG_WIDTH,IMG_HEIGHT,BufferedImage.TYPE_INT_RGB);Graphicsgraphics=image.getGraphics();graphics.setColor(Color.WHITE);graphics.fillRect(0,0,IMG_WIDTH,IMG_HEIGHT);Graphics2Dgraphics2d=(Graphics2D)graphics;drawRadomNum(graphics2d,request);returimage;}文件上传,支持多文件
@RequestMappig(value={"/upload"},method=RequestMethod.POST)publicfialStrigupload(@MultipartMultipartFileuploadFile)throwsIOExceptio{Strigupload="D:/www.yhj.com/webapps/upload/";Strigpath=upload+uploadFile.getFileName();Filefile=ewFile(path);uploadFile.save(file);retur"/upload/"+uploadFile.getFileName();}@POST({"/upload/multi"})publicfialStrigmultiUpload(HttpServletResposerespose,@MultipartMultipartFile[]files)throwsIOExceptio{Strigupload="D:/www.yhj.com/webapps/upload/";for(MultipartFilemultipartFile:files){Strigpath=upload+multipartFile.getFileName();Filefile=ewFile(path);System.out.pritl(path);if(!multipartFile.save(file)){retur"<script>alert('uploaderror!')</script>";//respose.getWriter().prit("<script>alert('uploaderror!')</script>");}}//respose.getWriter().prit("<script>alert('uploadsuccess!')</script>");retur"<script>alert('uploadsuccess!')</script>";}
评论