以下内容经本人(刘正仁)测试成功,如在使用的过程中有任何问题,请与我联系
(1):富文本编辑框的使用。
源程序如下:
<%@ page contentType="text/html; charset=utf-8" language="java"%>
<%@include file="/support/template/taglibs.jsp"%>
<link href="<%=baseURL%>/support/css/table.css" rel=stylesheet type="text/css" >
<HTML>
<HEAD>
<script type="text/javascript">
_editor_url = "<%=baseURL%>/support/HTMLArea/";
_editor_lang = "gb";
var editor = null;
function initEditor() {
editor = new HTMLArea("ta");
editor.generate();
}
</script>
<script type="text/javascript" src="<%=baseURL%>/support/HTMLArea/htmlarea.js" ></script>
<title></title>
</HEAD>
<script language="javascript">
function getValue()
{
document.all("test").onsubmit()
alert(document.all("ta").value)
}
</script>
<body topmargin="0" leftmargin="0" scroll="yes" onload="initEditor();" >
<html:form action="/edit.do" method="post" styleId="test">
<table width="100%" border="1" cellpadding="0" cellspacing="0" class="table_view">
<tr>
<td style=" width:100%">
<html:textarea property="username" styleId="ta" rows="20" cols="80">
</html:textarea>
</tr>
</table>
<html:submit>submit
</html:submit>
<input type="button" name="Submit" value="getValue" onClick="getValue()">
</html:form>
</body>
</HTML>
(2)内嵌页与struts结合的使用。
1. 1 action 代码
package test;
import org.apache.struts.actions.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.MultipartRequestWrapper;
import org.apache.struts.util.MessageResources;
import test.TestStruts;
public class TestInclude extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// Create a RequestDispatcher the corresponding resource
String path = mapping.getParameter();
if (path == null) {
throw new ServletException(messages.getMessage("include.path"));
}
RequestDispatcher rd =
servlet.getServletContext().getRequestDispatcher(path);
if (rd == null) {
throw new ServletException(messages.getMessage("include.rd", path));
}
// Unwrap the multipart request, if there is one.
if (request instanceof MultipartRequestWrapper) {
request = ((MultipartRequestWrapper) request).getRequest();
}
// 在这里组织好formbean
String id=request.getParameter("id");
System.out.println("id="+id);
((TestStruts)form).setUsername("bbbbb");
// request.setAttribute("testForm",form);
// Forward control to the specified resource
rd.include(request, response);
// Tell the controller servlet that the response has been created
return (null);
}
}
2. Action 中的配置
<action path="/test" type="test.TestInclude" parameter="/testInclude.jsp" name="testForm" scope="request" />
3: 主页面代码
<%@page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>testI</title>
</head>
<body bgcolor="#ffffff">
<h1>
<jsp:include flush="true" page="/test.do?id=1"></jsp:include>
</h1>
</body>
</html>
4 : 嵌入页面代码
<%@ page contentType="text/html; charset=UTF-8" %>
<%@include file="/support/template/taglibs.jsp"%>
<html>
<head>
<title>
testInclude
</title>
</head>
<body bgcolor="#ffffff">
<h1>
<bean:write name="testForm" property="username"/>
</h1>
</body>
</html>
(3):异步加载树的使用
1:树的页面源程序。
<%@ page contentType="text/html;charset=gb2312"%>
<%
response.setDateHeader("Expires",(new java.util.Date(0)).getTime());
request.setCharacterEncoding("GBK");
%>
<%String baseURL=request.getContextPath();%>
<html>
<head>
<title>组织机构(用户)</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script type="text/javascript" src="<%=baseURL%>/js/xloadtree/xtree.js"></script>
<script type="text/javascript" src="<%=baseURL%>/js/xloadtree/xmlextras.js"></script>
<script type="text/javascript" src="<%=baseURL%>/js/xloadtree/xloadtree.js"></script>
<link type="text/css" rel="stylesheet" href="<%=baseURL%>/css/xloadtree/xtree.css">
<script type="text/javascript">
/// 改变系统默认图标,将树显示成XP风格
webFXTreeConfig.rootIcon = "<%=baseURL%>/images/xloadtree/folder.png";
webFXTreeConfig.openRootIcon = "<%=baseURL%>/images/xloadtree/openfolder.png";
webFXTreeConfig.folderIcon = "<%=baseURL%>/images/xloadtree/folder.png";
webFXTreeConfig.openFolderIcon = "<%=baseURL%>/images/xloadtree/openfolder.png";
webFXTreeConfig.fileIcon = "<%=baseURL%>/images/xloadtree/user.gif";
webFXTreeConfig.lMinusIcon = "<%=baseURL%>/images/xloadtree/Lminus.png";
webFXTreeConfig.lPlusIcon = "<%=baseURL%>/images/xloadtree/Lplus.png";
webFXTreeConfig.tMinusIcon = "<%=baseURL%>/images/xloadtree/Tminus.png";
webFXTreeConfig.tPlusIcon = "<%=baseURL%>/images/xloadtree/Tplus.png";
webFXTreeConfig.iIcon = "<%=baseURL%>/images/xloadtree/I.png";
webFXTreeConfig.lIcon = "<%=baseURL%>/images/xloadtree/L.png";
webFXTreeConfig.tIcon = "<%=baseURL%>/images/xloadtree/T.png";
webFXTreeConfig.blankIcon = '<%=baseURL%>/images/xloadtree/blank.png';
//显示根(同时从服务获取所有主分类节点)
var tree = new WebFXLoadTree("集团","<%=baseURL%>/servlet/CategoryService?GetType=0",null,"doNothing()")
//显示第一级节点
function doCategoryAction(name){
alert(name)
}
function doPriCategoryAction(name){
alert(name)
}
function doNothing()
{
}
</script>
</head>
<body class="clsTreeBody">
<script language="javascript">
document.write(tree);
</script>
</body>
</html>
2:服务servlet代码
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CategoryService extends HttpServlet {
private static final String CONTENT_TYPE = "text/xml;charset=GBK";
private String urlBase="";
/**
* Constructor of the object.
*/
public CategoryService() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
urlBase=request.getContextPath();
response.setContentType(CONTENT_TYPE);
request.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
String strXML = "<?xml version=/"1.0/" encoding=/"GBK/"?>/n";
strXML += "/t<tree>/n";
int getType = Integer.parseInt( (String) request.getParameter("GetType"));
if (getType == 0) {
//获取所有主分类的XML
strXML += MakePriCategorySetXML();
}
else if (getType == 1) {
//获取某个主分类下所有文档分类的XML
int comid = Integer.parseInt( (String) request.getParameter(
"comid"));
strXML += makeItemsInPriCategoryXML(comid);
}
strXML += "/t</tree>/n";
out.print(strXML);
System.out.println(strXML);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
/**
* 创建每一个节点的XML文本
* @param name String
* @param action String
* @param src String
* @param icon String
* @param openIcon String
* @return String
*/
private String MakeItemXML(String name, String action, String src,
String icon, String openIcon) {
String strXML = "/t";
strXML += "<tree text=/"" + name + "/"";
strXML += " action=/"" + action + "/"";
if (src != null) {
strXML += " src=/"" + src + "/"";
}
if (icon != null) {
strXML += " icon=/"" + icon + "/"";
}
if (openIcon != null) {
strXML += " openIcon=/"" + openIcon + "/"";
}
strXML += "/>/n";
return strXML;
}
/**
* 获取所有主分类节点的XML文本
* @return String
*/
private String MakePriCategorySetXML() {
String strXML = "";
try {
String name="";
Collection c=new ArrayList();
Copmany com=new Copmany();
com.setId(1);
com.setName("测试公司1");
c.add(com);
com=new Copmany();
com.setId(1);
com.setName("测试公司1");
c.add(com);
com=new Copmany();
com.setId(2);
com.setName("测试公司2");
c.add(com);
com=new Copmany();
com.setId(3);
com.setName("测试公司3");
c.add(com);
Object [] o=c.toArray();
for(int i=0;i<o.length;i++) {
name=((Copmany)o[i]).getName();
int id=((Copmany)o[i]).getId();
String action = "javascript:doPriCategoryAction('" + name +"')";
String icon = urlBase+"/images/xloadtree/folder.png";
String openIcon = urlBase+"/images/xloadtree/openfolder.png";
String src=urlBase+"/servlet/CategoryService?GetType=1&comid="+id;
strXML += MakeItemXML(name, action, src, icon, openIcon);
}
}
catch (Exception ex) {}
return strXML;
}
/**
* 获取某个主分类下的所有文档分类的XML
* @param priCatID int
* @return String
*/
private String makeItemsInPriCategoryXML(int comid) {
String strXML = "";
String name="";
try {
//根据公司id找到相应的部门
for(int i=0;i<300;i++)
{
name="name"+i;
String action = "javascript:doCategoryAction('"+name+"')";
String icon = urlBase+"/images/xloadtree/folder.png";
String openIcon =urlBase+"/images/xloadtree/openfolder.png";
String src=null;
//判断是否存在有下一级,有的话则要继续。
// if (dao.hasChildren(id)) {
//String src =urlBase+"/servlet/CategoryService?GetType=2";
//}
strXML += MakeItemXML(name, action, src, icon, openIcon);
}
}
catch (Exception ex) {}
return strXML;
}
public void init() throws ServletException {
// Put your code here
}
}
(4):jfreeChar报表在html中显示
1 :servlet中生成图案代码
package test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.DefaultPieDataset;
public class ChartDemoServlet extends HttpServlet {
public ChartDemoServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");
DefaultPieDataset data = getDataSet();
JFreeChart chart = ChartFactory.createPieChart("水果产量图",data,true,false,false);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),100,chart,400,300,null);
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
//以下要替换成自己从数据中得到的数据
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果",100);
dataset.setValue("梨子",200);
dataset.setValue("葡萄",300);
dataset.setValue("香蕉",400);
dataset.setValue("荔枝",500);
return dataset;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void init() throws ServletException {
// Put your code here
}
}
2:jsp页面调用的代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>My JSP 'freechar.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<img src="/free/servlet/ChartDemoServlet" border="0">
</body>
</html>
(4):jfreeChar与ireport结合和ireport使用自定义数据源。代码如下:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="dori.jasper.engine.*" %>
<%@ page import="dori.jasper.engine.data.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="test.jfree.*" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.awt.image.*" %>
<%@ page import="org.jfree.chart.ChartFactory" %>
<%@ page import="org.jfree.data.DefaultCategoryDataset" %>
<%@ page import="org.jfree.data.CategoryDataset" %>
<%@ page import="org.jfree.chart.plot.PlotOrientation" %>
<%@ page import="org.jfree.chart.JFreeChart" %>
<%@ page import="test.data.*" %>
<%
try
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
JFreeChart chart=ChartFactory.createBarChart3D("水果产量图","水果", "产量",dataset,PlotOrientation.VERTICAL,true,false,false);
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.WHITE, 1000, 0, Color.WHITE));
BufferedImage image = chart.createBufferedImage(400, 400);
/* */
Collection c=new ArrayList();
test.data.CustomBean cbb=new test.data.CustomBean("刘正仁",new Integer(22),"刘正仁"," bb");
c.add(cbb);
cbb=new test.data.CustomBean("老婆",new Integer(23),"f"," f");
c.add(cbb);
Map parameters = new HashMap();
parameters.put("ChartImage", image);
File reportFile = new File("F:/jfreechar/WebRoot/test.jasper");//这个文件是由ireport生成的.
if(reportFile.exists())
{
System.out.println("这个文件存在");
}
System.out.println(reportFile.getPath());
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,new JRBeanCollectionDataSource(c));
response.reset();
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
%>
(5):动态table的使用。 使用请见页面中以实现的代码
1:首选要在使用动态表的页面引入DynamicTable.js文件.
2:动态表中有如下性性在构造子中必须加入.
如:
var NewObject=new DynamicTable('NewObject',2,arr,arr1,'form1','Content',listValue,'del.gif');
第一个参数为对象的名称.
第二个参数数字为动态表默认的长度.
第三个参数为一个数组,指明表头和所占比例(只支持白分比)
如下: var arr=['列头1,10%','列头2,30%','列头3,30%','列头4,30%']; //列头名,宽度
第4个参数为控件的相关属性定义.为一数组,长度与第三个参数一致.
如:
var arr1=['delFlagMany,0,||','userName,20,||,text,del.gif||doNothing','userNike,12,||,text,,','userP,20,||,nothing']; //名,长度,值(||分开多个值),控件类型
目前控件支持 text, textarea, select,date,file和没有.
数组中第一个基本可以写死,第一项为多选框的名字前缀,后面会跟一个数字。第二个为长度,由于多选框没有长度,这项可以写为0,第三项为hiddenID的默认值,中间用||分开。
后面的参数为每个单元格中的输入控件。有4项,第一项为控件的名字前缀,第二项为控件长度,第三项为控件的默认值,第4项为控件的类型。第5项为控件后面是否带有选择按钮,其中按钮有路经和执行的javaScript的方法,他只能带有两个参数。
(5):多附件上传与struts结合。
1 使用(4)中的动态table,实现文件可以选择多个。
2 相应的action中的代码
package test;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import org.apache.struts.upload.*;
import java.util.*;
import java.io.*;
public class TestS extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse) throws Exception{
//String test[] =((TestStruts)actionForm).getUsername();
//for(int i=0;i<test.length;i++)
//System.out.println(test[i]);
Hashtable files = actionForm.getMultipartRequestHandler().getFileElements();
System.out.println("files.size() :"+files.size() );
FormFile f[] = null;
f = new FormFile[files.size()];
String filePath = servletRequest.getContextPath();
System.out.println("filePath="+filePath);;
java.util.Enumeration fileKey = files.keys();
int i = 0;
String fname = "";
while (fileKey.hasMoreElements()) {
fname = (String) fileKey.nextElement();
System.out.println("fname="+fname);
f[i] = (FormFile) files.get(fname);
System.out.println("realNmae="+f[i].getFileName());
i++;
}
for (int a = 0; a < f.length; a++)
{
if (f[a] == null || f[a].getFileSize() == 0 || f[a].getFileName() == null ||
f[a].getFileName().equals("")) {
}
else {
InputStream stream = f[a].getInputStream();
OutputStream bos = new FileOutputStream("F:/work/ytstm/YTSTMWeb/" +
f[a].getFileName());//修改成上传文件存放路经
System.out.println("显示系统名" + f[a].getFileName()); //显示系统名
System.out.println("文件大小:" + f[a].getFileSize() ); //显示系统名
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
}
}
return actionMapping.findForward("test");
}
}
(5): 系统异常处理。
请在要处理异常的action中加入如下示例的代码:
<action input="/login.jsp" name="loginForm" path="/login" scope="request" type="ytstm.security.LoginAction" validate="true">
<exception
handler="cotech.framework.web.BaseExceptionHandler"
key="global.error.systemprompt" path="/login.jsp" type="cotech.framework.exceptions.BaseException"/>
<forward name="success" path="/support/common/window.jsp" redirect="true"/>
<forward name="failure" path="/login.jsp" redirect="true"/>
</action>
(6): 网页调用word打印。
<html>
<head>
<title>无标题文档</title>
<%
response.setContentType("application/msword");
%>
</head>
<%String flag=request.getParameter("flag");
System.out.println(flag);
%>
<body >
<img src="support/images/apply.gif" width="70" height="25">
<b>gffgdfgdfg</b>
</body>
</html>
(7):servlet中用itext生成pdf
package test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
public class TestPdf extends HttpServlet {
public TestPdf() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try
{
response.setContentType("application/pdf");
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
Document document=new Document(PageSize.A4, 0, 0, 12, 12);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
PdfWriter writer=PdfWriter.getInstance( document, buffer );
document.open();
//文档内容自己填充
document.add(new Paragraph("dfsfsdfffdsf中文vxcvxcv",FontChinese));
document.close();
System.out.println("dfsfsdfffdsf中文vxcvxcv");
byte[] bytes = buffer.toByteArray();
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}