Struts2与freemarker自定义标签
来源:互联网 发布:kwic软件体系结构 编辑:程序博客网 时间:2024/05/17 06:41
包目录视图
领域模型层User.java
package com.xuzengqiang.project.domain;public class User{private String username;private String password;public String getUsername(){return username;}public void setUsername(String username){this.username = username;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}}
Index.java用于首页跳转,访问WEB-INF下面的index.jsp页面
package com.xuzengqiang.project.struts2.action;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")public class IndexAction extends ActionSupport{public String execute() throws Exception{return "success";}}UserAction.java用于登录跳转
package com.xuzengqiang.project.struts2.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{private static final long serialVersionUID = 3252129927051594877L;private String username;private String password;public String getUsername(){return username;}public void setUsername(String username){this.username = username;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public String login() throws Exception{String username=getUsername();String password=getPassword();if("xuzengqiang".equals(username) && "123".equals(password)){HttpServletRequest request=ServletActionContext.getRequest();HttpSession session=request.getSession();session.setAttribute("username", username);return "user_login_success";}return "user_login_failure";}}CssLink.java,需继承UIBean。
package com.xuzengqiang.project.view.component;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.components.UIBean;import com.opensymphony.xwork2.util.ValueStack;@SuppressWarnings("all")public class CssLink extends UIBean{private String sourcePath="";private String templateName="csslink.ftl";public String getSourcePath(){return sourcePath;}public void setSourcePath(String sourcePath){this.sourcePath=sourcePath;}public String getTemplateName(){return templateName;}public void setTemplateName(String templateName){this.templateName=templateName;}public CssLink(ValueStack stack, HttpServletRequest request, HttpServletResponse response){super(stack, request, response);}@Overrideprotected Object findValue(String expr, Class toType){if(null !=expr){return super.findValue(expr, toType);}return null;}@Overrideprotected void evaluateExtraParams(){super.evaluateExtraParams(); //添加参数,在freemarker的模板中就可以使用${parameters.sourcePath}获取路径了if(sourcePath!=null){addParameter("sourcePath", findValue(getSourcePath() , String.class));}}//返回模板名称@Overrideprotected String getDefaultTemplate(){return templateName;}}
CssLinkTag.java,需继承ComponentTagSupport类
package com.xuzengqiang.project.view.tag;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.components.Component;import org.apache.struts2.views.jsp.ComponentTagSupport;import com.opensymphony.xwork2.util.ValueStack;import com.xuzengqiang.project.view.component.CssLink;//fm:cssLink 用作css样式的链接public class CssLinkTag extends ComponentTagSupport{private static final long serialVersionUID = 5431625114311564858L;private String sourcePath = "";public String getSourcePath(){return sourcePath;}public void setSourcePath(String sourcePath){this.sourcePath = sourcePath;}@Overridepublic Component getBean(ValueStack valStack, HttpServletRequest request, HttpServletResponse response){return new CssLink(valStack, request, response);}@Override/* * 参数的初始化 */protected void populateParams(){super.populateParams();CssLink cssLink = (CssLink) component;cssLink.setSourcePath(getSourcePath());}}csslink.ftl
<link rel="stylesheet" type="text/css" href="${parameters.sourcePath}"/>
framework-tag.tld,拷贝struts2-core-....jar包目录下的META-INF下的struts-tags然后重命名即可。
<?xml version="1.0" encoding="UTF-8" standalone="no"?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.0"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"><display-name>Framework Tags</display-name><tlib-version>2.3</tlib-version><short-name>fm</short-name><uri>/framework-tags</uri><tag><description><![CDATA[struts2结合freemarker自定义标签]]></description><name>cssLink</name><tag-class>com.xuzengqiang.project.view.tag.CssLinkTag</tag-class><body-content>empty</body-content><attribute><name>sourcePath</name><required>false</required><rtexprvalue>false</rtexprvalue></attribute><dynamic-attributes>false</dynamic-attributes></tag></taglib>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> <package name="index" extends="struts-default"> <action name="index" class="com.xuzengqiang.project.struts2.action.IndexAction"> <result name="success">/WEB-INF/index.jsp</result> </action> </package><package name="user" extends="struts-default"> <action name="user" class="com.xuzengqiang.project.struts2.action.UserAction"> <result name="user_login_success">/WEB-INF/success.jsp</result> <result name="user_login_failure">/WEB-INF/index.jsp</result> </action></package></struts>
index.jsp,使用的时候需要加上<@taglib prefix="fm" uri="/framework-tags" %>,调用的时候使用<fm:cssLink 属性1>即可。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="fm" uri="/framework-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><fm:cssLink sourcePath="/ProjectTest/css/index.css" /><title>测试用例</title></head><body><div class="content"><div class="login"><form action="${pageContext.request.contextPath}/user!login" method="post">账号:<input type="text" name="username"/><br/>姓名:<input type="text" name="password"/><br/><input type="submit" value="登录"/></form></div></div></body></html>
web.xml,如果要将配置文件struts.xml放入到WEB-INF下面的某个目录下面,可以在过滤器StrutsPreparedAndExecuteFilter中配置config参数。
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>ProjectTest</display-name> <filter> <filter-name>strutsPrepareAndExecuteFilter</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>config</param-name><param-value>struts-default.xml,struts-plugin.xml, ../configuration/struts.xml</param-value> </init-param> </filter> <filter-mapping> <filter-name>strutsPrepareAndExecuteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
0 0
- Struts2与freemarker自定义标签
- Struts2结合freemarker自定义标签
- Struts2结合freemarker自定义标签
- freemarker 自定义freeMarker标签
- 用freemarker做模板创建一个struts2自定义标签
- freemarker使用struts2标签
- FreeMarker 自定义标签
- freemarker编写自定义标签
- freemarker自定义标签
- FreeMarker自定义标签
- freemarker 自定义标签
- freemarker自定义标签
- freemarker自定义标签
- Freemarker自定义标签
- Freemarker 自定义标签实现
- freeMarker 自定义标签
- freemarker使用struts2标签库
- struts2下的分页与自定义标签
- java.lang.NoClassDefFoundError问题的解决办法
- 随着帝企鹅这一系列的组合拳,腾讯将在移动时代以微信为杀伤性核武器
- 如何将App程序发布到苹果App Store
- ThinkPHP 项目分组URL生成与URL访问
- Linux C一站式学习习题答案11.6.2求平方根
- Struts2与freemarker自定义标签
- 局部变量和全局变量的作用域
- jQuery 遍历 JSON 对象
- Android HTTPS验证和添加http头信息token认证
- 最简单的应用程序makefile
- 查看PKG是否在内存并统计PKG里SQL执行次数
- 程序命名的一些提示(转)
- 留言簿 head.htm 设置 && 英文分页
- easy ui 表格合并