Java を介してファイルを生成するには、間違いなくストリームが使用されますが、この記事ではストリームについては説明しません。まず、いくつかの準備作業を行い、プロジェクトをビルドし、Freemarker テンプレート テクノロジを使用して、最初に Freemark ファイルを表示しましょう。
预定价格: ${trip.price!'面议'}元 目的地: ${trip.toCity!''} 行程天数:${trip.tripDay!'待定'} 提前预定天数: 建议提前一周报名 出团日期:${trip.toTirpTime} 友谊
テンプレートが構築されたら、次にこのツール クラスを通じて HTML ファイルを生成するツール クラスを作成します。 FreeMarkerUtil.java ここでは、使用される主なメソッドのみをリストします。
public static void writeTo(ServletContext context, Mapmap, String templatePath, String templateName, String htmlPath) throws IOException, TemplateException { Configuration freemarkerCfg = new Configuration(); // 设置要解析的模板所在的目录,并加载模板文件 freemarkerCfg.setServletContextForTemplateLoading(context, templatePath); freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8"); // 获取模板,并设置编码方式 Template template = freemarkerCfg.getTemplate(templateName); template.setEncoding("UTF-8"); File htmlFilel = new File(context.getRealPath("") +File.separator +"html"+File.separator+"channel"); if(! htmlFilel.exists()) { htmlFilel.mkdir(); } File htmlFile = new File(context.getRealPath("") + File.separator + htmlPath); Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(htmlFile), "UTF-8")); // 合并数据模型与模板 template.process(map, out); out.flush(); out.close(); }
インポートする必要があるクラスはすべて freemarker-2.3.16.jar パッケージにあります。
import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;import freemarker.template.TemplateException;
実際、次のステップはビジネス処理です。技術的な内容は一切なく、非常にシンプルです。この関数は、フリーマーカーを使用してテンプレート ビューを作成するときにもよく使用されます。学習したい人にわかりやすくするために、ビジネス レイヤーとコントロール レイヤーは理解しやすい 1 つのメソッドで記述されています。 。
public ModelAndView doAdd(HttpServletRequest request, MultipartHttpServletRequest filerequest, Trip trip) throws ParseException { Listfile1 = filerequest.getFiles("file1"); Listfile2 = filerequest.getFiles("file2"); if (file1.size() > 0) { String titleImg = ""; titleImg = uploadImage(request, file1.get(0)); if (null != titleImg && !titleImg.equals("")) { trip.setImgUrl(titleImg); } } if (file2.size() > 0) { String titleImg = ""; titleImg = uploadImage(request, file2.get(0)); if (null != titleImg && !titleImg.equals("")) { trip.setImgUrl2(titleImg); } } trip.setInputTime(new Date()); File directory = new File(request.getSession().getServletContext() .getRealPath("/") + "trip"); if (!directory.exists()) { directory.mkdirs(); } DateFormat format1 = new SimpleDateFormat("yyyyMMddhhmm"); String dateStr = format1.format(new Date()); String html = "trip" + File.separator + trip.getChannelId() + "-" + trip.getCityId() + "-" + dateStr + ".html"; trip.setUrlStr(html); PageBean pageBean3 = tripService.getTriplist(0, 10); ListtripList = pageBean3.getBeanList(); PageBean pageBean2 = newsService.getTripNewslist(1, 10); ListtripNewsList = pageBean2.getBeanList(); PageBean pageBean22 = newsService.getTripNews2list(1, 10); ListtripNews2List = pageBean22.getBeanList(); Map map = new HashMap(); map.put("tripNews2List", tripNews2List); map.put("tripList", tripList); map.put("tripNewsList", tripNewsList); map.put("trip", trip); map.put("base", request.getContextPath()); try { FreeMarkerUtil.writeTo(request.getSession().getServletContext(), map, "/templates", "trip.ftl", html); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); } tripService.save(trip); return new ModelAndView("redirect:/trip/page.shtml?page_now=1"); }
さて、これで静的 Web サイトを作成できます。
静電気を発生させる機能が何なのか知らない人もいるかも?
1. アクセス時にデータベースを操作する必要はありません。
2. HTML 静的ページは検索エンジンにとってより使いやすいです。
3. アクセス速度が非常に速くなります。
待って、自分の目で感じてみましょう。必要に応じて、メッセージを残してソース コードのデモをリクエストできます。
この記事のアドレス: http://www.osblog.net/code/117.html