要整合struts2和fck首先得知道fck怎么单独使用的,这里不再讲了。网上有很多文章。
1、首先在web.xml里面配置struts2内容和fck内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- struts2 配置了一个过滤器来执行分发功能 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter>
<filter-name>clean-struts</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>clean-struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- fck 编辑器配置 -->
<servlet>
<servlet-name>Connector</servlet-name>
<servlet-class>
com.fredck.FCKeditor.connector.ConnectorServlet
</servlet-class>
<init-param>
<param-name>baseDir</param-name>
<param-value>/UserFiles/</param-value><!-- 此为文件浏览路径 -->
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-name>SimpleUploader</servlet-name>
<servlet-class>
com.fredck.FCKeditor.uploader.SimpleUploaderServlet
</servlet-class>
<init-param>
<param-name>baseDir</param-name>
<param-value>/UserFiles/</param-value><!-- 此为文件上传路径,需要在WebRoot 目录下新建 UserFiles 文件夹,在UserFiles文件夹下建立Image、Flash和File文件夹用来保存用户上传的各类文件 -->
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>enabled</param-name>
<param-value>true</param-value><!-- 设置为true开启上传功能-->
</init-param>
<init-param>
<param-name>AllowedExtensionsFile</param-name><!-- 可以上传的文件类型 -->
<param-value></param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsFile</param-name><!-- 不可以上传的文件类型 -->
<param-value>
php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi
</param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsImage</param-name><!-- 可以上传的图片类型 -->
<param-value>jpg|gif|jpeg|png|bmp</param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsImage</param-name><!-- 不可以上传的图片类型 -->
<param-value></param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsFlash</param-name><!-- 可以上传的flash类型 -->
<param-value>swf|fla</param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsFlash</param-name><!-- 不可以上传的flash类型 -->
<param-value></param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Connector</servlet-name><!-- 此处注意路径问题,因为我们刚才在WebRoot下建立了FCKeditor文件夹所在要加上红字部分 -->
<url-pattern>
/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector
</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SimpleUploader</servlet-name>
<url-pattern>
/fckeditor/editor/filemanager/upload/simpleuploader
</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2、struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache SoftWare Foundation//DTD Struts Configurtionv 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
<package name = "struts2" extends="struts-default">
<!-- 采用 struts2 通配符方法调用action里面对应的方法 -->
<action name="*" method="{1}">
<result name="contest">/contest.jsp</result>
<result name="page">/result.jsp</result>
<result name="fail">/fail.jsp</result>
<result name="error">/error.jsp</result>
<result name="result">/result.jsp</result>
</action>
<!-- 采用最笨的方法配置多个action 的name属性,在一个action里面配置多个方法;
<action name="contest" method="contest">
<result name="contest">/contest.jsp</result>
<result name="fail">/fail.jsp</result>
<result name="error">/error.jsp</result>
</action>
-->
</package>
</struts>
action 类
/**
*
*/
package com.struts2.action;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.struts2.domain.TbUser;
import com.struts2.domain.TbUserDAO;
/**
* @author meemei
*
*/
public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -6081534009500680546L;
// fck新闻内容 ;
private String contest ;
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public String getContest() {
return contest;
}
public void setContest(String contest) {
this.contest = contest;
}
/**fck 里面提交内容;
* @return
*/
public String contest(){
System.out.print(contest);
request = ServletActionContext.getRequest();
request.setAttribute("contest", contest);
return "contest" ;
}
}
在网上找了好多讲struts2里面如何解决不支持el表示和jstl的方法,有的说是web.xml声明处应该声明为2.3以前的,还有的说要显示在页面头部声明支持el表达式,都不行,最后自己发现这样配置一切ok。
在jsp2.0以后默认是不支持EL表达式和jstl标签的话,需要在
里面加入c.tld文件。
constext.jsp编辑页面
<%@ page pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>提交结果</title>
<style type="text/css">
.center {
text-align: center;
}
.12 {
font-size: 12px;
font-weight: bold;
}
</style>
</head>
<script type="text/javascript" src="fckeditor/fckeditor.js"></script>
<body>
<form action="contest.action" method="post" </td> </td> </tr> </tr>
enctype="multipart/form-data">
<table width="90%" border="0">
<tr>
<td>
<font style="color: red;" 欢迎: <s:property
value="#session.result" /> </font>
</td>
</tr>
<tr>
<td>
<h3 align="center" style="color: blue">
新闻发布系统
<a href="upload.jsp" style="font-size: 12px;">struts2上传文件</a>
</h3>
</tr>
<tr>
<td height="25">
<textarea name="contest" id="contest"
style="width: 100%; height: 20px;"></textarea>
<script type="text/javascript">
var oFCKeditor = new FCKeditor( 'contest' ) ;
oFCKeditor.BasePath = 'fckeditor/' ;
oFCKeditor.ToolbarSet = 'Default' ;
oFCKeditor.Width = '100%' ;
oFCKeditor.Height = '400' ;
oFCKeditor.Value = '' ;
oFCKeditor.ReplaceTextarea();
//oFCKeditor.Create() ;
</script>
<tr>
<td align="center">
<input type="submit" name="Submit" value="提交" />
<input type="reset">
</td>
</table>
</form>
</body>
</html>