最q要开始做目了,目中可能会用到Struts2和Freemarker集成Q所以做了个实例l大家分享一下?/p>
前期的配|web.xmlQ导入jar包就不给大家介绍了,q些内容做过struts2的朋友的非常熟?zhn)Q如果有不会的大家可以找一下帮助文档或者上互联|上搜烦一下解x法?/p>
看过struts2l构囄朋友们都应该知道struts2的展现层不再是像struts1那样单纯的jsp了,它能够集成很多展现层技术,例如今天说的freemarker{等?/p>

既然上面都说Cfreemarker仅仅是一个展现层技术,那么我们自然会想刎ͼfreemarker应该和struts2中配|的action标签中的result有关p,其实是q样的,我们知道struts2的result标签是匚w跌{路径控制展示层的作用Q所以我们利用struts2和freemarker的最q本操作是配置result标签Q把原先的result标签的type变成freemarkerQ蟩转的文g变成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的注解方式来配置a(chn)ction的话Q那么我们就会这样配|:
- @Action(value = "showadd", results ={ @Result(name = "success", type = "freemarker", location ="/flt/adduser.ftl") })
M是要改result的类型和跌{文gcd卛_?/p>
最后我们说一下我们怎么模板中的变量变成实际的|q个也是比较单的Q我们这个工作要在action中实玎ͼ具体是我们要将模板中的变量定义到action中,q且生成get和setҎ(gu)Q最后在相应的业务方法中这个变量赋|q样struts2׃自动的ؓ我们值填写到模板中,形成真实的展现页面,最后蟩转显C给用户?/p>
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>
对应的actionQ?/p>
- 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>(); //为数据模型添加?nbsp;
-
- * 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";
-
- }
q样我们q行p够看到我们的一个添加页面,需要填入用户名和密码?/p>
]]>