struts2和freemarker集成實例 (注解方式)
最近要開始做項目了,項目中可能會用到Struts2和Freemarker集成,所以做了個實例給大家分享一下。
前期的配置web.xml,導(dǎo)入jar包就不給大家介紹了,這些內(nèi)容做過struts2的朋友的非常熟悉,如果有不會的大家可以找一下幫助文檔或者上互聯(lián)網(wǎng)上搜索一下解決方法。
看過struts2結(jié)構(gòu)圖的朋友們都應(yīng)該知道struts2的展現(xiàn)層不再是像struts1那樣單純的jsp了,它能夠集成很多展現(xiàn)層技術(shù),例如今天說的freemarker等等。
既然上面都說到了freemarker僅僅是一個展現(xiàn)層技術(shù),那么我們自然會想到,freemarker應(yīng)該和struts2中配置的action標(biāo)簽中的result有關(guān)系,其實就是這樣的,我們知道struts2的result標(biāo)簽就是匹配跳轉(zhuǎn)路徑控制展示層的作用,所以我們利用struts2和freemarker的最近本操作就是配置result標(biāo)簽,把原先的result標(biāo)簽的type變成freemarker,跳轉(zhuǎn)的文件變成freemarker的模板文件即可。配置如下:
- <struts>
- <package name="struts"extends="struts-default">
- <action name="userLogin"class="com.test.action.LoginAction" method="userLogin">
- <result name="success" type="freemarker">
- /WEB-INF/templates/user.ftl
- </result>
- </action>
- </package>
- </struts>
如果我們要是用struts2的注解方式來配置action的話,那么我們就會這樣配置:
- @Action(value = "showadd", results ={ @Result(name = "success", type = "freemarker", location ="/flt/adduser.ftl") })
總之就是要改result的類型和跳轉(zhuǎn)文件類型即可。
最后我們說一下我們怎么將模板中的變量變成實際的值,這個也是比較簡單的,我們這個工作要在action中實現(xiàn),具體就是我們要將模板中的變量定義到action中,并且生成get和set方法,最后在相應(yīng)的業(yè)務(wù)方法中將這個變量賦值,這樣struts2就會自動的為我們將值填寫到模板中,形成真實的展現(xiàn)頁面,最后跳轉(zhuǎn)顯示給用戶。
Freemarker的模板實例:
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
- <title>Insert title here</title>
- </head>
- <body>
- <formmethodformmethod="post" action="${formaction}" name="${formname}">
- <input id="${adduser_username}" name="${adduser_username}" type="${text}" value="" />
- <input id="${adduser_password}" name="${adduser_password}" type="${text}" value=""/>
- <input id="${adduser_submit}" name="${adduser_submit}" type="${submit}" value="adduser" />
- </form>
- </body>
- </html>
對應(yīng)的action:
- private Stringformaction;
- private Stringformname;
- private Stringadduser_username;
- private Stringadduser_password;
- private Stringadduser_submit;
- private Stringtext;
- private Stringsubmit;
- public StringgetAdduser_username() {
- returnadduser_username;
- }
- publicvoidsetAdduser_username(String adduser_username) {
- this.adduser_username = adduser_username;
- }
- public StringgetAdduser_password() {
- returnadduser_password;
- }
- publicvoidsetAdduser_password(String adduser_password) {
- this.adduser_password = adduser_password;
- }
- public StringgetAdduser_submit() {
- returnadduser_submit;
- }
- publicvoid setAdduser_submit(Stringadduser_submit) {
- this.adduser_submit = adduser_submit;
- }
- public StringgetText() {
- returntext;
- }
- publicvoidsetText(String text) {
- this.text =text;
- }
- public StringgetSubmit() {
- returnsubmit;
- }
- publicvoidsetSubmit(String submit) {
- this.submit =submit;
- }
- public StringgetFormaction() {
- returnformaction;
- }
- publicvoidsetFormaction(String formaction) {
- this.formaction =formaction;
- }
- public StringgetFormname() {
- returnformname;
- }
- publicvoidsetFormname(String formname) {
- this.formname =formname;
- }
- @Action(value= "showadd", results = { @Result(name ="success", type = "freemarker", location = "/flt/adduser.ftl") })
- public Stringshowadd() throws Exception {
- /*
- * FreeMarkerUtil freeMarkerUtil=newFreeMarkerUtil();
- * Map<String,Object> root=newHashMap<String,Object>(); //為數(shù)據(jù)模型添加值
- * root.put("formaction","adduser"); root.put("formname", "adduser");
- *
- * FileWriter out=new FileWriter(newFile("/adduser.ftl"));
- * freeMarkerUtil.printFile("/flt","adduser.ftl",root, out);
- */
- setFormaction("adduser");
- setFormname("adduser");
- setAdduser_password("password");
- setAdduser_submit("adduser_submit");
- setAdduser_username("username");
- setText("text");
- setSubmit("submit");
- return"success";
- }
這樣我們運行就能夠看到我們的一個添加頁面,需要填入用戶名和密碼。
posted on 2013-06-22 10:22 void 閱讀(907) 評論(0) 編輯 收藏 所屬分類: Struts2 、Freemarker