??xml version="1.0" encoding="utf-8" standalone="yes"?> 一旦你讄了realm和验证的ҎQ你需要进行实际的用户d处理。一般说来,对用戯言dpȝ是一件很ȝ的事情,你必d量减用L录验证的ơ数。作为缺省的情况Q当用户W一ơ请求受保护的资源时Q每一个web应用都会要求用户d。如果你q行了多个web应用Qƈ且每个应用都需要进行单独的用户验证Q那q看h有点像你在与你的用h斗。用户们不知道怎样才能把多个分ȝ应用整合成一个单独的pȝQ所有他们也׃知道他们需要访问多个不同的应用,只是很迷惑,Z么总要不停的登录?/p>
Tomcat 4的“single sign-on”特性允许用户在讉K同一虚拟L下所有web应用Ӟ只需d一ơ。ؓ了用这个功能,你只需要在Host上添加一个SingleSignOn Valve元素卛_Q如下所C: <Valve className="org.apache.catalina.authenticator.SingleSignOn" 在Tomcat初始安装后,server.xml的注释里面包括SingleSignOn Valve配置的例子,你只需要去掉注释,卛_使用。那么,M用户只要dq一个应用,则对于同一虚拟L下的所有应用同h效?/p>
使用single sign-on valve有一些重要的限制Q?/p>
1> value必须被配|和嵌套在相同的Host元素里,q且所有需要进行单炚w证的web应用Q必通过context元素定义Q都位于该Host下?br /> 2> 包括׃n用户信息的realm必须被设|在同一UHost中或者嵌套之外?br /> 3> 不能被context中的realm覆盖?br /> 4> 使用单点d的web应用最好用一个Tomcat的内|的验证方式Q被定义在web.xml中的<auth-method>中)Q这比自定义的验证方式强QTomcat内置的的验证方式包括basic、digest、form和client-cert?br /> 5> 如果你用单点登录,q希望集成一个第三方的web应用C的网站中来,q且q个新的web应用使用它自q验证方式Q而不使用容器理安全Q那你基本上没招了。你的用hơ登录原来所有应用时需要登录一ơ,q且在请求新的第三方应用时还得再d一ơ。当Ӟ如果你拥有这个第三方web应用的源码,而你又是一个程序员Q你可以修改它,但那恐怕也不容易做?br /> 6> 单点d需要用cookies?/p>
1. 需要在环境变量中加上TOMCAT_OPTS, CATALINA_OPTS两个属性,
如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
ms是最的Qmx是最大,64m, 512m分别是指内存的容?
2. 修改Catalina.bat文g
?66行“rem Execute Java with the applicable properties ”以下每?br />%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 中的%CATALINA_OPTS% 替换?Xms64m -Xmx512m
debug="0"/>
1、JFreeReportQ报表解军_?br /> 2、JFreeChartQJava囑Ş解决ҎQApplication/Applet/Servlet/JspQ?br /> 3、JCommonQJFreeReport和JFreeChart的公q?br /> 4、JFreeDesignerQJFreeReport的报表设计工?br />
我们可以从jfree官方|站上获取最新版本和相关资料Q但是jfree的document需?0金才能获取Q,
获取地址Q?/font>
http://www.jfree.org/jfreechart/index.html
Q同时可以获得简明介l)
我们以当前最新版本:jfreechart_0.9.21.zipZ子进行说明?br />
二、JFreeChart配置安装
1、解压jfreechart_0.9.21.zip到指定位|,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar
是例子程序(该部分留l大家自己去研究Q?br /> 2、ؓ了配|成功,我们需要关注的文g有如下三个:jfreechart-0.9.21.jar、lib\jcommon-0.9.6.jar?br /> lib\gnujaxp.jar
3、如果是Application开发,把上qC个文件拷贝到%JAVA_HOME%\LIB中,同时在环境变量CLASSPATH中加?br /> 如果是WEB开发,以TOMCAT中的一个WEB目TESTZ子说明:
把上qC个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文gQ在其中加入如下代码Q?br /><servlet>
2 <servlet-name>DisplayChart</servlet-name>
3 <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
4</servlet>
5<servlet-mapping>
6 <servlet-name>DisplayChart</servlet-name>
7 <url-pattern>/servlet/DisplayChart</url-pattern>
8</servlet-mapping>
xjfreechart的配|就完成了,下面可以进行jfreechart的开发了。这里值得提出的是jfreechart的类
l构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一P有时候可能需要查源码。如?br /> 是中文显C的时候可能依据观感需要改变源码的字体Q不q我个h觉得q个版本比以前版本要好一些?br />
三、JFreeChart功能介绍
JFreeChart目前是最好的java囑Ş解决ҎQ基本能够解决目前的囑Ş斚w的需求,主要包括如下几个斚wQ?br /> pie charts (2D and 3D)Q饼图(q面和立体)
bar charts (regular and stacked, with an optional 3D effect)Q柱状图
line and area chartsQ曲U图
scatter plots and bubble charts
time series, high/low/open/close charts and candle stick chartsQ时序图
combination chartsQ复合图
Pareto charts
Gantt chartsQ甘特图
wind plots, meter charts and symbol charts
wafer map charts
(态图?饼图(二维和三l? , q图?水^,垂直),U图,点图,旉变化?甘特? 股票行情?混和? 温度计图, d囄常用商用图表)
囑Ş可以导出成PNG和JPEG格式Q同时还可以与PDF和EXCEL兌
JFreeChart核心cd介绍Q?br /> 研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与囑Ş
本n有关Q后者与囑Ş昄的数据有兟뀂具体研I如果大家有兴趣的话可以自己研究Q以后有旉我会告诉大家怎么?br /> 研究源码?br /> 核心cM要有Q?br /> org.jfree.chart.JFreeChartQ图表对象,Mcd的图表的最l表现Ş式都是在该对象进行一些属性的定制。JFreeChart引擎本n提供了一个工厂类用于创徏不同cd的图表对?br /> org.jfree.data.category.XXXDataSet:数据集对象,用于提供昄图表所用的数据。根据不同类型的图表对应着很多cd的数据集对象c?br /> org.jfree.chart.plot.XXXPlotQ图表区域对象,基本上这个对象决定着什么样式的图表Q创对象的时候需要Axis、Renderer以及数据集对象的支持
org.jfree.chart.axis.XXXAxisQ用于处理图表的两个_Uu和横?br /> org.jfree.chart.render.XXXRenderQ负责如何显CZ个图表对?br /> org.jfree.chart.urls.XXXURLGenerator:用于生成Web图表中每个项目的鼠标点击链接
XXXXXToolTipGenerator:用于生成图象的帮助提C,不同cd图表对应不同cd的工hC类
四、JFreeChart开发(Application/AppletQ?br />1、pie chartsQ代码如?br />/** *//**
2 * Description:This application is the first jfreechart
3 * Datetime:20058-02-11
4 */
5package demo;
6
7import org.jfree.chart.JFreeChart;
8import org.jfree.chart.ChartFactory;
9import org.jfree.chart.ChartFrame;
10import org.jfree.data.general.DefaultPieDataset;
11
12public class FirstJFreeChart
{
13 public FirstJFreeChart()
{
14 }
15
16 public static void main(String[] args)
{
17 DefaultPieDataset dpd = new DefaultPieDataset();
18 dpd.setValue("理人员",25);
19 dpd.setValue("市场人员",25);
20 dpd.setValue("开发h?/span>",45);
21 dpd.setValue("其他人员",5);
22
23 //Create JFreeChart object
24 //参数可以查看源码
25 JFreeChart pieChart = ChartFactory.createPieChart("CityInfoPort公司l织架构?/span>",dpd,true,true,false);
26 ChartFrame pieFrame = new ChartFrame("CityInfoPort公司l织架构?/span>",pieChart);
27 pieFrame.pack();
28 pieFrame.setVisible(true);
29 }
30}
31
上面例子可以q一步改q,如下Q?br />/** *//**
2 * Description:This application is the first jfreechart
3 * Datetime:20058-02-11
4 */
5package com.cityinforport.demo;
6
7import org.jfree.chart.JFreeChart;
8import org.jfree.chart.ChartPanel;
9import org.jfree.chart.ChartFactory;
10import org.jfree.chart.ChartFrame;
11import org.jfree.data.general.DefaultPieDataset;
12import org.jfree.chart.plot.PiePlot;
13import org.jfree.data.general.PieDataset;
14import org.jfree.ui.ApplicationFrame;
15import org.jfree.ui.RefineryUtilities;
16import java.awt.Font;
17import javax.swing.*;
18
19
20public class FirstJFreeChart extends ApplicationFrame
{
21 //构造函?/span>
22 public FirstJFreeChart(String s)
{
23 super(s);
24 setContentPane(createDemoPanel());
25 }
26
27 public static void main(String[] args)
{
28 FirstJFreeChart fjc = new FirstJFreeChart("CityInfoPort公司l织架构?/span>");
29 fjc.pack();
30 RefineryUtilities.centerFrameOnScreen(fjc);
31 fjc.setVisible(true);
32 }
33
34 //生成饼图数据集对?/span>
35 public static PieDataset createDataset()
{
36 DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
37 defaultpiedataset.setValue("理人员",10.02D);
38 defaultpiedataset.setValue("市场人员",20.23D);
39 defaultpiedataset.setValue("开发h?/span>",60.02D);
40 defaultpiedataset.setValue("OEM人员",10.02D);
41 defaultpiedataset.setValue("其他人员",5.11D);
42
43 return defaultpiedataset;
44 }
45
46 //生成图表d象JFreeChart
47 public static JFreeChart createChart(PieDataset piedataset)
{
48 //定义图表对象
49 JFreeChart jfreechart = ChartFactory.createPieChart("CityInfoPort公司l织架构?/span>",piedataset,true,true,false);
50 //获得图表昄对象
51 PiePlot pieplot = (PiePlot)jfreechart.getPlot();
52 //讄图表标签字体
53 pieplot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
54 pieplot.setNoDataMessage("No data available");
55 pieplot.setCircular(true);
56 pieplot.setLabelGap(0.01D);//间距
57
58 return jfreechart;
59 }
60
61 //生成昄图表的面?/span>
62 public static JPanel createDemoPanel()
{
63 JFreeChart jfreechart = createChart(createDataset());
64 return new ChartPanel(jfreechart);
65 }
66
67}
68
但是破解登陆口oQ需要有两个必要的前提:
1.安装Windows XP的分区必采用FAT32文gpȝQ?br />2.用户名中没有汉字。?br />在确认满两个条g后,卛_执行以下步骤Q来破解登陆口o。
1.开机启动Win XPQ当q行到“正在启动Windows XP”的提示界面Ӟ按“F8”键调出pȝ启动选择菜单Q选择“带命o行安全模式”;
2.当运行停止后Q会列出“Administrator”和其它用户的选择菜单(本例的其他用户以xpuser01Z)Q选择“Administrator”后回RQ进入命令行模式Q?br />3.键入命o““net user xpuser01 1234/ADD”这是更改该用户密码的命令,命o中的?234”是更改后的新密码,如果键入的用户不存在Qxpuser01Q,那么pȝ会自动添加这个用戗?br />4.另外q可以用“net 1oca1group administrator xpuser01 /ADD”命令把xpuser01q个用户升ؓ用户Q即可拥有所有权限。?br />5.最后一步,是重新启动计算机,在登录窗口中输入刚刚更改的新密码便可成功登陆?/p>