1、在
Web
工程开发过程中可能会经常遇见
400/404/500
类型的错误页面,对于开发人员而言见到这种提示页面多了可能觉得问题不大,但是实际运用当中是面向客户的,需要配置一个合理的自定义错误页面。
2、本文只提Tomcat设置
400/404/500
自定义错误页面,如果
Springmvc Controller
配置自定义错误页面的方式,可以参考下我的这篇博文
点击这里~
1、/WEB-INF/web.xml
<!-- =======================================错误页配置开始====================================== -->
<!-- 400错误 -->
<error-page>
<error-code>400</error-code>
<location>/error.jsp</location>
</error-page>
<!-- 404 页面不存在错误 -->
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<!-- 500 服务器内部错误 -->
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
<!-- java.lang.Exception异常错误,依据这个标记可定义多个类似错误提示 -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<!-- java.lang.NullPointerException异常错误,依据这个标记可定义多个类似错误提示 -->
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/error.jsp</location>
</error-page>
<!-- =======================================错误页配置结束====================================== -->
2、error.jsp
直接放在
Web
工程的
webapp
或
WebContent
根目录下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
尊敬的朋友,后台服务器有问题,工程师们正在努力抢修中,请稍后访问......
</body>
</html>
重启Tomcat服务器生效!!!
一、说明1、web系统开发过程中经常遇见400/404/500类型的错误页面,对于开发人员而言见到这种页面多了可能觉得问题不大,但是实际运用当中是面向客户的,需要配置一个合理的自定义错误页面。2、本文只提Tomcat设置400/404/500自定义错误页面(推荐),Springmvc controller配置自定义错误页方式点击这里~二、实现1、/WEB-INF/web.xml...
示例描述:本章演示如何开始使用JDK进行程序的开发。
HelloWorldApp.java 第一个用Java开发的应用程序。
firstApplet.java 第一个用Java开发的Applet小程序。
firstApplet.htm 用来装载Applet的网
页
文件
示例描述:本章介绍开发Java的基础语法知识。
accumulationByDoWhile.java 用do~while语句写的累加程序
accumulationByFor.java 用for语句写的累加程序
accumulationByWhile.java 用while语句写的累加程序
boolExample.java 演示boolean变量的程序
charExample.java 演示char变量的程序
compare.java 演示前缀、后缀自加之间区别的程序
constCharExample.java 演示转义字符
converseNumber.java 逆向输出数字
daffodilNumber.java 求水仙花数
division.java 演示整除结果
errorCompoundVariable.java
错误
使用局部变量示例
factorial.java 求阶乘
Fibonacci.java 求Fiblnacci数列
GcdAndGcm.java 求最大公约数和最小公倍数
errorInit.java 演示变量初始化
错误
的程序
integerExample.java 演示各种整型变量的使用
isPrime.java 判断素数
leapYearByIf.java 用if语句判断闰年
leapYearByLogical.java 用逻辑表达式判断闰年
lowToUpper.java 小写字母转换成大写字母
lozengeStar.java 输出一个由*组成的菱形
multiplyTable.java 求乘法口诀表
narrowingConversion_1.java 缩减转换引发
错误
示例1
narrowingConversion_2.java 缩减转换引发
错误
示例2
notMultipleOfThree.java 把100-200之间不能被3整除的数输出
outputByDoWhile.java 用while循环随机输出数据
outputByWhile.java 用do~while循环随机输出数据
outputMax.java 求两个数中的最大数
overflowExample.java 演示溢出
precedence.java 演示自加运算符的优先级
primeNumber.java 输出100-200之间的所有素数
ranking.java 评定成绩等级
rankingBySwitch.java 用switch语句评定成绩等级
realExample.java 演示浮点数的有效位数
remainder.java 取余运算示例
showBreak.java 利用标号语句跳转出所有循环嵌套
showCount.java 循环计数示例
showDoubleLoop.java 演示双重循环
showDoubleLoopSe.java 改进的双重循环
showOrder_1.java 演示操作数求值顺序示例1
showOrder_2.java 演示操作数求值顺序示例2
sign.java 用条件运算实现符号函数示例
signByIF.java 用if语句实现符号函数示例
triangleStar.java 输出一个由*组成的直角三角形
upperToLowCase.java 大写转换成小写
variableScopeExample.java 变量使用范围示例
示例描述:本章学习对象和类。
accessMember.java 访问成员变量示例
constructNoPara.java 无参数的构造方法
constructWithPara.java 带参数的构造方法
declareDefault.java 缺省访问权限的使用
declarePrivate.java 私有访问权限的使用
declareProtected.java 保护访问权限的使用
deriveClass.java 子类访问父类变量示例
getLinePara.java 获取命令行参数示例
hasStaticMethod.java 静态成员方法示例
hasStatMember.java 静态成员变量示例
HelloNative.c 用C写的一个小程序
HelloNative.dll 用C生成的DLL文件
HelloNative.exp 用VC编译生成的辅助文件
HelloNative.h 用javah生成的C语言用的头文件
HelloNative.java 准备调用C函数的java文件
HelloNative.lib 用VC编译生成的静态库文件
HelloNative.obj 用VB编译生成的目标文件
HelloNativeTest.java 测试本地化是否成功的类文件
instanceVar.java 定义一个实例成员变量
invokeByObject.java 对象实参传递示例程序
invokeByValue.java 传值调用示例程序
invokeMethod.java 同一个类中调用方法示例
invokeOther.java 类的外部调用方法示例
invokeStaticMethod.java 调用静态方法示例
localVariable.java 演示局部变量
localVSmember.java 局部变量与成员变量同名问题示例
onlyTest.java 对象传值示例
otherClass.java 从类的外部访问对象的成员
showInstVar.java 演示不同的对象拥有不同的成员变量
showMain.java 演示main方法访问本类成员
showMethod.java 演示如何定义一个方法体
showReturn_1.java return语句示例1
showReturn_2.java return语句示例2
showStaicVar.java 演示静态变量的使用
staticBlock.java 演示静态块的使用
staticVar.java 定义静态变量
supplyTest.java 对象作为静态成员使用示例
trySwap.java 试图交换两个形参的值
useOnlyTest.java 创建多个对象,演示this的作用
useStaticBolck.java 使用静态块
useStVar.java 使用静态成员变量
示例描述:本章学习继承与多态。
absClass.java 抽象类定义示例
ancestor.java 基类定义示例1
ancestor_1.java 另一个基类定义
anonymousInner.java 匿名内部类
base.java 定义一个基类
BaseColors.java 一个简单的接口
basePoint.java 一个测试用的基类
Colorable.java 一个子接口
ColoredPoint.java 一个测试用子类
common.java 一个公用类
derive.java 一个测试用子类
differ.java 测试静态方法与实例方法之间的区别
forefather.java 一个简单的基类
grandson.java 上面这个类的子类
hasConstructor.java 拥有构造器的类
hasFinalFun.java 拥有最终方法的类
hasRecall.java 可以完成回调功能的类
HasStatic.java 一个简单的拥有静态成员的类
hideMember_1.java 成员隐藏示例1
hideMember_2.java 成员隐藏示例2
hideMember_3.java 成员隐藏示例3
hideMember_4.java 成员隐藏示例4
hideMember_5.java 成员隐藏示例5
implementABS.java 继承一个抽象类
impRecall.java 实现回调函数
inheritConstruct_1.java 构造器继承示例1
inheritConstruct_2.java 构造器继承示例2
inheritConstruct_3.java 构造器继承示例3
inheritConstruct_4.java 构造器继承示例4
inheritConstruct_5.java 构造器继承示例5
inheritConstruct_6.java 构造器继承示例6
inheritor.java 子类覆盖父类示例
inPack.java 包示例
LotsOfColors.java 定义一个子接口
matching.java 重载解析示例
notInPack.java 用前缀引用包中的类
onlyShow.java 一个简单的接口
Outer_1.java 外部类示例1
Outer_2.java 外部类示例2
Outer_3.java 外部类示例3
Outer_4.java 外部类示例4
Outer_5.java 外部类示例5
Outer_6.java 外部类示例6
Outer_7.java 外部类示例7
Outer_8.java 外部类示例8
overrideMember_1.java 成员方法覆盖示例1
overrideMember_2.java 成员方法覆盖示例2
overrideMember_3.java 成员方法覆盖示例3
overrideMember_4.java 成员方法覆盖示例4
overrideMember_5.java 成员方法覆盖示例5
Paintable.java 实现了多个接口的方法
PaintedPoint.java 实现了多个接口的方法
Point.java 一个简单的类
PrintColors.java 一个子接口
RainbowColors.java 一个子接口
realPoint.java 一个子类
second.java 属于一个命名包的类
showDiff.java 演示隐藏与覆盖之间的区别
showSomething.java 测试运行时多态
stupid.java 试图覆盖最终方法的类,它有
错误
Sub.java 一个简单的子类
Super.java 一个基类
testOverload.java 测试方法的重载示例1
testOverload_1.java 测试方法的重载示例2
testOverload_2.java 测试方法的重载示例3
testOverload_3.java 测试方法的重载示例4
useConstructor.java 使用构造器
useHideMember_2.java 试图使用隐藏的成员变量
useInner.java 使用内部类
示例描述:本章学习数组与字符串。
ArrayString.java 字符串数组
assignTwoDime.java 为二维数组赋值
getMaxElem.java 获取数组中的最大元素
incCapicity.java 演示StingBuffer的容量增长
SortDemo.java 排序示例
travelTwoDime.java 遍历二维数组
traversing.java 遍历一维数组
useStrBuf.java 使用StringBuffer示例
useString.java 使用String示例
YanghuiTri.java 构造和显示杨辉三角
示例描述:本章学习Java的异常处理。
demoException_1.java 异常示例1
demoException_2.java 异常示例2
demoException_3.java 异常示例3
demoException_4.java 异常示例4
demoException_5.java 异常示例5
divZeroError.java 除零异常
hasCheckException.java 检查型异常
MyException.java 用户
自定义
异常
myInput.java 输入数据示例
nestException_1.java 异常嵌套示例1
nestException_2.java 异常嵌套示例2
nestException_3.java 异常嵌套示例3
outBoundError.java 下标越界异常
throwException.java 抛出异常示例
throwsException.java 声明抛出异常
useMyException.java 使用
自定义
异常
示例描述:本章学习Java的输入和输出。
CopyFile.java 文件复制实例
dir.java 显示目录下的所有文件和目录
encrypt.java 文件加密
FileList.java 自己实现的一个文件名称枚举类
MyDataIO.java 数据输入输出示例
MyFileOutput.java 将键盘读入的文字保存到文件
MyPipedIO.java 管道流示例
MySequenceIn.java 顺序输入流示例
ObjectFileTest.java 序列化对象示例
ReadAndWrite.java 读入和写出数据
ReadAndWriteFile.java 读入数据写出到文件
Student.java 定义一个用来序列化的类
ThreadIn.java 接收数据用的线程类
ThreadOut.java 发送数据用的线程类
TypeFile.java 显示文件内容的类
useScanner.java 用Scanner接收用户的输入
示例描述:本章学习多线程。
enhanceThread.java 一个自己定义的增强型线程类
ThreadImRunnable.java 继承Runnable接口实现多线程
mulThread.java 创建多个线程对象的类
demoJoin.java 演示使用join()以确保主线程最后结束
clicker.java 一个计数用的线程类
demoPri.java 调用上面这个类设置线程优先级示例
myThread.java 自己定义的一个Thread的子类
mutexThread.java 一个能管理临界区的线程类
demoMutex.java 使用上面这个类来演示线程的互斥
commSource.java 一个共享资源的类
demoSynchrony.java 演示线程的同步
setDataThread.java 设置数据的线程类
readDataThread.java 读取数据的线程类
demoEnhanceThread.java 使用自己定义的线程类示例
producer_consumer.java 演示生产者-消费者线程
consumer.java 消费者线程
producer.java 生产者线程
common.java 公有类
示例描述:本章学习运行时类型识别。
Candy.java 一个用来测试的简单类
changeFields.java 改变属性值示例
Circle.java 一个用于测试的简单类
DumpMethods.java 使用反射机制来获取类中的方法
getClassName.java 利用反射机制获取类的名字
invokeConstructor.java 利用反射机制调用构造器
invokeMethod.java 利用反射机制调用成员方法
listConstructors.java 利用反射机制获取构造器列表
listFields.java 利用反射机制获取成员属性列表
listMethods.java 利用反射机制获取成员方法列表
loadClass.java 动态装载一个类
Shape.java 一个用于测试的简单类
useArray1.java 用反射机制使用数组示例1
useArray2.java 用反射机制使用数组示例2
示例描述:本章学习泛型。
demoBounds.java 演示有界类型
demoForceChange.java 演示强制类型转换
demoGeneric.java 泛型类的使用示例
demoGenIF.java 测试泛型类
demoGenMethods.java 泛型方法示例
demoHerit_1.java 泛型类继承示例1
demoHerit_2.java 泛型类继承示例2
demoRTTI_1.java 泛型类的类型识别示例1
demoRTTI_2.java 泛型类的类型识别示例2
demoWildcard.java 通配符使用示例
demoWipe.java 擦拭示例
derivedGen.java 泛型父类继承示例
derivedNonGen.java 非泛型父类继承示例
foo.java 一个有
错误
的类
Gen.java 无限界的泛型擦拭
Generic.java 一个简单的泛型类
genMethod.java 一个泛型方法
GenStr.java 有限界的泛型擦拭
MinMax.java 泛型接口示例
MyClass.java 实现一个泛型接口
nonGen.java 以非泛型类为父类
simpGen.java 使用泛型类示例
Stats.java 一个有界类泛型
superGen.java 父类是泛型
twoGen.java 有两个参数的泛型类
示例描述:本章学习集合。
CompareScore.java 实现比较器接口
demoAlgorithm.java 集合中简单算法示例
demoArrayList.java 链表使用示例
demoBinSearch.java 二分查找示例
demoEnumSet.java 枚举类型示例
demoHashMap.java 哈希映射示例
demoHashSet.java 哈希集合示例
demoSort.java 排序示例
demoTreeMap.java 树映射示例
demoTreeSet.java 树集合示例
demoVector.java 向量使用示例
job.java 模拟操作系统的进程调度
monkey.java 用链表求猴子选大王
myCompare.java 自己实现的比较器接口
reverseString.java 利用栈将字符串逆序输出
scheduling.java 模拟操作系统的作业调度过程
showClothValue.java 根据用户输入型号输出相应的价格
Size.java 一个枚举类
Student.java 用于记录学生信息的类
示例描述:本章学习类型包装器、自动装箱和元数据。
demoAnno.java 给方法做注释示例
demoAutoBox_1.java 自动装/拆箱机制示例1
demoAutoBox_2.java 自动装/拆箱机制示例2
demoAutoBox_3.java 自动装/拆箱机制示例3
demoInteger.java 整数类型包装器使用示例
demoSingle.java 单成员注释使用示例
DeprecatedClass.java Deprecated注释示例
InProgress.java Documented元注释使用示例
Marker.java 一个被注释的接口
Meta.java 利用反射机制获取方法的注释
MetaAll.java 获取所有注释示例
MyAnno.java 包含了默认值的注释
MyMarker.java 标记注释使用示例
MySingle.java 单成员注释使用示例
OverrideTester.java Override注释示例
SuppressWarningsTester.java SuppressWarnings注释示例
TODO.java Target元注释使用示例
What.java 显示全部注释
示例描述:本章学习常用工具类。
checkEmail.java 利用正则表达式检验Email的合法性
currentTime_1.java 显示时间示例程序1
currentTime_2.java 显示时间示例程序2
currentTime_3.java 显示时间示例程序3
DateAndTime.java 用Calendar显示当前的日期和时间
demoFmtTime.java 使用时间格式转换符输出日期和时间
demoFormatter.java Formatter简单输出示例
demoGroup.java 组匹配使用示例
demoMathing.java 匹配方法使用示例
demoMemory.java 内存管理示例程序
demoPattern_1.java Pattern使用示例1
demoPattern_2.java Pattern使用示例2
demoRandom.java 产生随机数序列示例
demoReplace.java 替换方法使用示例
demoRound.java 取整函数使用示例
elapsed.java 计算程序运行时间
exitJVM.java 从子线程中退出虚拟机
getPI.java 利用随机数求π值
progPI.java 利用反正切函数求π的值
runNotepad.java 启动记事本
showCalendar.java 用GregorianCalendar实现一个万年历
showProperties.java 获取环境属性
textToTime.java 从文本串创建日期对象
useLog.java 利用换底公式求任意对数值
示例描述:本章学习GUI程序设计。
addNodeInJTree.java 在JTree中增加节点示例
AlarmClock.java 小闹钟程序
AWTComponents.htm 为显示AWT组件而编制的网
页
文件
AWTComponents.java AWT组件示例
AWTFrame.java 用AWT编写的一个简单窗口
CheckAchromatopsiat.java 色盲检测程序
demoBorderLayout.java 边框布局使用示例
demoCardLayout.java 卡片布局使用示例
demoGridBagLayout.java 增强网格布局使用示例
demoGridLayout.java 网格布局使用示例
demoJApplet.htm 运行JApplet的网
页
文件
demoJApplet.java JApplet使用示例
demoJButton.java 按钮使用示例
demoJCheckbox.java 复选框使用示例
demoJComboBox.java 组合框使用示例
demoJDialog.java 对话框使用示例
demoJFrame.java JFrame简单使用示例
demoJLabel_1.java 图像标签使用示例
demoJLabel_2.java 改变标签上鼠标形状示例
demoJList.java 列表框使用
demoJMenu.java 菜单使用示例
demoJPanel.java 面板使用简单示例
demoJRadioButton.java 单选按钮使用示例
demoJScrollPane_1.java 在JScrollPane创建时添加组件示例
demoJScrollPane_2.java 通过add()方法添加组件示例
demoJSplitPane_1.java 分隔板简单示例1
demoJSplitPane_2.java 分隔板简单示例2
demoJTabbedPane.java 选项板使用示例
demoJTable_1.java 表格使用示例1
demoJTable_2.java 表格使用示例2
demoJTable_3.java 表格使用示例3
demoJTable_4.java 表格使用示例4
demoJTable_5.java 表格使用示例5
demoJText.java 文本框和密码框使用示例
demoJTextArea.java 文本区使用示例
demoJToolBar.java 工具栏使用示例
demoJTree.java 创建JTree示例
ExampleFileFilter.java Sun公司提供的一个文件名过滤器
findDialog.java 查找对话框
fontDialog.java 字体选择对话框
MyTableModel.java 本类实现了一个表格用的模型,取代默认的模型
Notebook.java 记事本
painting_1.java 在面板上画出简单图形示例1
painting_2.java 在面板上画出图形示例2
reMulEvent.java 响应单击按钮事件
showTriDialog.java 用系统预定义的对话框
本章下面还有一些编程要用到的图片和声音文件,不一一列出。
示例描述:本章学习多媒体程序设计。
building.java 调用另外一个houseCanvas类画出一栋房子
CombinerCanvas.java 编写自己的画布,所要显示的图片在此画布上显示
CombinPic.java 合成两幅图片
DrawArcs.java 画椭圆和圆弧示例
DrawLines.java 画直线示例
DrawPoly.java 画多边形示例
DrawRects.java 画矩形示例
fadeInOut.java 淡入淡出效果示例
FillArea.java 填充图形示例
FontsCanvas.java 自行管理字体的画布
GetFonts.java 获取系统中安装的字体示例
GrayFilter.java 自己实现的GrayFilter类
GrayModel.java 实现一个具备灰度变换功能的Model
houseCanvas.java 用直线画出一栋房子
illumination.java 光照特效示例
LightingLiteral.java 字体特效显示示例
ManageFonts.java 自行管理字体示例
mixing.java 显示色彩混合效果
playAudio.java 在Application中播放声音文件
playMP3.java 增强的声音播放文件
playMusic.htm 可以播放背景音乐的一个网
页
playMusic.java 利用AudioClip播放声音文件
playVideo.java 媒体播放器编写示例
ResizeOval.java 缩放图形示例
ShowFonts.java 建和使用字体示例
SoundBase.java 将Java Sound API封装在一个线程中
TransparencyExample.java 为实现色彩混合效果而定义的画布
viewPic.java 用标签显示图像示例
本章下面还有一些编程要用到的图片和声音文件,不一一列出
示例描述:本章学习数据库程序设计。
AddressList.java 学生信息管理系统实例
deleteData.java 从数据库中删除记录
FirstExample.mdb 本章用到的数据库文件
insertData.java 向数据库中添加新数据
queryData.java 查询数据示例
updateData.java 修改数据示例
示例描述:本章学习C/S网络程序设计。
chatClient.java 聊天客户端程序
chatServer.java 聊天服务端程序
Client.java 一个简单的客户端程序
DownFile.java 文件下载示例
GetHostName.java 根据IP查找主机名
GetIP.java 根据域名查找IP地址
GetMyIP.java 获取本机IP地址
MultiServer.java 可以响应多个客户端的服务程序
myBrowser.java 一个简单的浏览器
Server.java 一个简单的服务端程序
ServerThread.java 一个服务端的线程类
UDPChat.java 用UDP实现的聊天程序示例
示例描述:本章学习JSP程序设计。本章所有文件均已经按照
Tomcat
网站部署的要求放置在各自的目录下,然后打包成ZIP文件。读者只需要解包后放置在某一分区中,然后在
Tomcat
中
配置
好入口就可以使用。
下面的文件均放置在ROOT目录下面
ArbitraryObject.java 实现一个事件监听者接口的类
calendar.jsp 用JSP实现的日历
count.txt 站点计数器保存的数据文件
counter.jsp 用JSP实现的计数器
faq.java 连接数据库用的JavaBean
leaveword.htm 留言板的主
页面
Model.java 自己定义的事件源类
ModelChangedListener.java 自己定义的一个事件监听者接口
MouseMovedExampleEvent.java 事件状态对象示例
MouseMovedExampleListener.java 鼠标事件监听者接口与事件监听者示例
OurButtonCustomizer.java 实现一个“按钮”Beans的定制器
query.jsp 数据库查询程序
saveword.java 用于保存记录的JavaBean
saveword.jsp 后台保存数据的JSP文件
viewword.jsp 查看留言的JSP
页面
WeekDayBeanInfo.java 实现BeanInfo接口示例
WeekDayEditor.java 实现属性编辑器接口
下面的文件均存放在chat目录下,是聊天室的组成文件。
chatreg.java 用户注册用到的JavaBean文件
chatreg.jsp 用户注册的前台JSP文件
chatregcof.jsp 用户注册检查JSP文件
chatroom.jsp 聊天室的主
页面
confirm.jsp 检查登录是否正确的JSP文件
in.jsp 即将进入聊天室前的提示
页面
listuser.jsp 显示聊天室内的所有用户名的JSP文件
logout.jsp 清除用户的相关信息
netchat.jsp 用户进入聊天室的
界面
文件
showmsg.jsp 显示各个用户所说的话
talk.jsp 用户聊天用的JSP文件
示例描述:本章是一个IM软件的完整代码。
ChatFrame.java 聊天用的主
界面
程序
ClientManageFrame.java 是好友管理窗口,也是客户端程序的主窗口
DBConnection.java 连接数据库用的JavaBean
FindUserDlg.java 查找好友对话框
FindUserInfo.java 显示用户基本信息
FriendLabel.java 在list列表中显示用户的头像和字符信息
Login.java 用户登录
界面
LoginUser.java 定时器的任务类,用于定时获取上线的用户的信息
MyInfo_AboutBox.java 显示作者信息
ReceiveOthersDialog.java 当用户收到陌生人的消息时,这个类向用户提示
RegisterDialog.java 用户注册面板
Server.java 提供各种服务的类
ServerFrame.java 服务器端的主
界面
ServerThread.java 与客户端通讯的线程
SetCenter.java 将窗口设置在屏幕中央的类
showTimeTask.java 刷新时间的类
StartServer.java 启动服务器的主类
UpdateDialog.java 更新用户信息的对话框
UserInfo.java 获取用户信息的类
UserInfoBean.java 保存用户信息的一个JavaBean
Demo已经部署到线上,地址是http://shiro.itboy.net,
管理员帐号:admin,密码:sojson.com 如果密码
错误
,请用sojson。
PS:你可以注册自己的帐号,然后用管理员赋权限给你自己的帐号,但是,每20分钟会把数据初始化一次。建议自己下载源码,让Demo跑起来,然后跑的更快,有问题加群解决。
本人提供这个Shiro + SpringMvc + Mybatis + Redis 的Demo 本着学习的态度,如果有欠缺和不足的地方,给予指正,并且多多包涵。
“去其糟粕取其精华”。如果觉得写的好的地方就给个赞,写的不好的地方,也请多多包涵。
使用过程:
1.创建数据库。
创建语句 :tables.sql
2.插入初始化数据
插入初始化数据:init.data.sql
3.运行。
管理员帐号:admin
密码:sojson
ps:定时任务的sql会把密码改变为sojson.com
新版本说明:http://www.sojson.com/blog/164.html 和 http://www.sojson.com/blog/165.html
主要解决是之前说的问题:Shiro 教程,关于最近反应的相关异常问题,解决方法合集。
项目在本
页面
的附件中提取。
一、Cache
配置
修改。
配置
文件(spring-cache.xml )中已经修改为如下
配置
:
<!-- redis
配置
,也可以把
配置
挪到properties
配置
文件中,再读取 -->
这种 arguments 构造的方式,之前
配置
有缺点。
这里之前的
配置
有问题,因为参数类型不一致,有时候jar和环境的问题,导致参数根据index对应,会处理问题,
理论上加另一个 name,就可以解决,现在把name 和type都加上,更保险。
二、登录获取上一个URL地址报错。
当没有获取到退出前的request ,为null 的时候会报错。在(UserLoginController.java )135行处有所修改。
* shiro 获取登录之前的地址
* 之前0.1版本这个没判断空。
SavedRequest savedRequest = WebUtils.getSavedRequest(request);
String url = null ;
if(null != savedRequest){
url = savedRequest.getRequestUrl();
* 我们平常用的获取上一个请求的方式,在Session不一致的情况下是获取不到的
* String url = (String) request.getAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE);
三、删除了
配置
文件中的cookie写入域的问题。
在
配置
文件里(spring-shiro.xml )中的
配置
有所修改。
<!-- 会话Cookie
模板
-->
<!--cookie的name,我故意取名叫xxxxbaidu -->
<!--cookie的有效时间 -->
<!--
配置
存储Session Cookie的domain为 一级域名
上面
配置
是去掉了 Session 的存储Key 的作用域,之前设置的.itboy.net ,是写到当前域名的 一级域名 下,这样就可以做到N 个 二级域名 下,三级、四级....下 Session 都是共享的。
<!-- 用户信息记住我功能的相关
配置
-->
<!--
配置
存储rememberMe Cookie的domain为 一级域名
<!-- 30天时间,记住我30天 -->
记住我登录的信息
配置
。和上面
配置
是一样的道理,可以在相同 一级域名 下的所有域名都可以获取到登录的信息。
四、简单实现了单个帐号只能在一处登录。
我们在其他的系统中可以看到,单个帐号只允许一人使用,在A处登录了,B处再登录,那A处就被踢出了。如下图所示。
但是此功能不是很完美,当A处被踢出后,再重新登录,这时候B处反应有点慢,具体我还没看,因为是之前加的功能,现在凌晨了,下次我有空再瞧瞧,同学你也可以看看,解决了和我说一声,我把功能修复。
五、修复功能(BUG)
1.修复权限添加功能BUG。
之前功能有问题,每当添加一个权限的时候,默认都给角色为“管理员”的角色默认添加当前新添加的权限。这样达到管理员的权限永远是最大的。由于代码有BUG ,导致所有权限删除了。现已修复。
2.修复项目只能部署到Root目录下的问题。
问题描述:之前项目只能部署到Root 下才能正常运行,目前已经修复,可以带项目路径进行访问了,之前只能这样访问,http://localhost:8080 而不能http://localhost:8080/shiro.demo/ 访问,目前是可以了。
解决方案:在 FreeMarkerViewExtend.java 33行处 增加了BasePath ,通过BasePath 来控制请求目录,在 Freemarker 中可以自由使用,而 JSP 中是直接在 JSP 中获取BasePath 使用。
解决后遗症:因为我们的权限是通过URL 来控制的,那么增加了项目的目录,导致权限不能正确的判断,再加上我们的项目名称(目录)可以
自定义
,导致更不好判断。
后遗症解决方案:PermissionFilter.java 50行处 解决了这个问题,详情请看代码和注释,其实就是replace 了一下。
HttpServletRequest httpRequest = ((HttpServletRequest)request);
* 此处是改版后,为了兼容项目不需要部署到root下,也可以正常运行,但是权限没设置目前必须到root 的URI,
* 原因:如果你把这个项目叫 ShiroDemo,那么路径就是 /ShiroDemo/xxxx.shtml ,那另外一个人使用,又叫Shiro_Demo,那么就要这么控制/Shiro_Demo/xxxx.shtml
* 理解了吗?
* 所以这里替换了一下,使用根目录开始的URI
String uri = httpRequest.getRequestURI();//获取URI
String basePath = httpRequest.getContextPath();//获取basePath
if(null != uri && uri.startsWith(basePath)){
uri = uri.replace(basePath, "");
3.项目启动的时候报错,关于JNDI的
错误
提示。
其实也不是错,但是看着不舒服,所以还得解决这个问题。解决这个问题需要在web.xml 中的开始部位加入以下代码。
spring.profiles.active
spring.profiles.default
spring.liveBeansView.mbeanDomain
4.项目Maven打包问题。
打包的时候,不同版本的 Eclipse 还有IDEA 会有打包打不进去Mapper.xml 文件,这个时候要加如下代码(群里同学提供的)。
src/main/java
**/*.properties
**/*.xml
false
在 标签内加入即可,如果还是不能解决,那么请你加群(改名后)说明你的问题,有人会回答你。
5.
Tomcat
7以上在访问JSP
页面
的时候,提示JSTL
错误
。
这个
错误
是因为
Tomcat
7 中没有 JSTL 的jar包,现在已经在项目pom.xml 中增加了如下 jar 的引入管理。
javax.servlet
javax.servlet
jsp-api
provided
如果还是不能解决问题,请在官方群(群号:259217951)内搜索“jstl” 如图下载依赖包。
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1
Java EE 框架..................................................................................................................................................................................1
Table of Contents........................................................................................................................................................................... 2
JBoss Seam 简介......................................................................................................................................................................... 11
Chapter 1. Seam 入门.................................................................................................................................................................14
1.1. 试试看.......................................................................................................................................................................... 14
1.1.1. 在JBoss AS 上运行示例..................................................................................................................................14
1.1.2. 在
Tomcat
服务器上运行示例.......................................................................................................................... 15
1.1.3. 运行测试........................................................................................................................................................... 15
1.2. 第一个例子:注册示例.............................................................................................................................................. 15
1.2.1. 了解代码........................................................................................................................................................... 16
1.2.2. 工作原理........................................................................................................................................................... 26
1.3. Seam 中的可点击列表:消息示例............................................................................................................................. 27
1.3.1. 理解代码........................................................................................................................................................... 27
1.3.2. 工作原理........................................................................................................................................................... 32
1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32
1.4.1. 理解代码........................................................................................................................................................... 33
1.4.2. 工作原理........................................................................................................................................................... 39
1.5. Seam
页面
流:猜数字范例........................................................................................................................................ 40
1.5.1. 理解代码........................................................................................................................................................... 40
1.5.2. 工作原理........................................................................................................................................................... 45
1.6. 一个完整的Seam 应用程序:宾馆预订范例............................................................................................................ 45
1.6.1. 介绍................................................................................................................................................................... 46
1.6.2. 预订系统概况................................................................................................................................................... 48
1.6.3. 理解Seam 业务对话(Conversation)................................................................................................................. 48
1.6.4. Seam 的UI 控制库........................................................................................................................................... 55
1.6.5. Seam 调试
页面
................................................................................................................................................. 56
1.7. 一个使用Seam 和jBPM 的完整范例:DVD 商店...................................................................................................57
1.8. 一个使用Seam 工作空间管理(workspace management)的完整范例:Issue Tracker........................................59
1.9. 结合Seam 和Hibernate 的范例:Hibernate 预订系统............................................................................................. 60
1.10. 一个RESTful 的Seam 应用程序:Blog 范例......................................................................................................... 60
1.10.1. 使用“拉”风格的MVC................................................................................................................................... 61
1.10.2. 可收藏的搜索结果
页面
................................................................................................................................. 63
1.10.3. 在RESTful 应用程序中使用“推”风格("push"-style)的MVC................................................................65
1.11. 在JBoss 中用JSF 1.2 RI 运行Seam 的范例............................................................................................................68
Chapter 2. 用Seam-gen 起步......................................................................................................................................................69
2.1. 准备活动...................................................................................................................................................................... 69
2.2. 建立一个新的Eclipse 项目........................................................................................................................................ 69
2.3. 创建新动作.................................................................................................................................................................. 72
2.4. 创建有动作的表单(form)...................................................................................................................................... 73
2.5. 从现有数据库生成应用程序...................................................................................................................................... 74
2.6. 将应用部署为EAR..................................................................................................................................................... 75
2.7. Seam 与增量热部署.................................................................................................................................................... 75
3 / 347
2.8. 在Jboss 4.0 下使用Seam............................................................................................................................................76
2.8.1. 安装JBoss 4.0...................................................................................................................................................76
2.8.2. 安装JSF 1.2 RI................................................................................................................................................. 76
Chapter 3. 上下文相关的组件模型............................................................................................................................................76
3.1. Seam 上下文.................................................................................................................................................................76
3.1.1. Stateless context(无状态上下文)................................................................................................................. 77
3.1.2. Event context(事件上下文)..........................................................................................................................77
3.1.3. Page context(
页面
上下文)............................................................................................................................77
3.1.4. Conversation context(业务会话上下文)......................................................................................................77
3.1.5. Session context(Session 上下文)..................................................................................................................78
3.1.6. Business process context (业务流程上下文)..............................................................................................78
3.1.7. Application context(应用上下文).................................................................................................................78
3.1.8. Context variables(上下文变量)....................................................................................................................79
3.1.9. Context 搜索优先级..........................................................................................................................................79
3.1.10. 并发模型......................................................................................................................................................... 79
3.2. Seam 组件....................................................................................................................................................................80
3.2.1. 无状态Session Bean......................................................................................................................................... 80
3.2.2. 有状态Session Bean......................................................................................................................................... 80
3.2.3. 实体Bean.......................................................................................................................................................... 81
3.2.4. JavaBeans.......................................................................................................................................................... 81
3.2.5. 消息驱动Bean.................................................................................................................................................. 82
3.2.6. 拦截................................................................................................................................................................... 82
3.2.7. 组件名字........................................................................................................................................................... 82
3.2.8. 定义组件范围(Defining the Component Scope)......................................................................................... 83
3.2.9. 具有多个角色的组件(Components with multiple roles)............................................................................ 84
3.2.10. 内置组件......................................................................................................................................................... 84
3.3. 双向注入...................................................................................................................................................................... 85
3.4. Lifecycle methods(生命周期方法)......................................................................................................................... 87
3.5. 条件装载(Conditional installation)........................................................................................................................ 87
3.6. 日志...............................................................................................................................................................................88
3.7. Mutable 接口和@ReadOnly........................................................................................................................................89
3.8. Factory 和Manager 组件.............................................................................................................................................91
Chapter 4.
配置
Seam 组件.........................................................................................................................................................93
4.1. 通过属性设置来
配置
组件.......................................................................................................................................... 93
4.2. 通过components.xml 来
配置
组件.............................................................................................................................93
4.3. 细粒度的
配置
文件...................................................................................................................................................... 97
4.4. 可
配置
的属性类型...................................................................................................................................................... 97
4.5. 使用XML 命名空间................................................................................................................................................... 98
Chapter 5. 事件、拦截器和异常处理..................................................................................................................................... 101
5.1. Seam 事件...................................................................................................................................................................101
5.1.1.
页面
动作......................................................................................................................................................... 102
5.1.2. 组件驱动的事件............................................................................................................................................. 108
5.1.3. 上下文事件..................................................................................................................................................... 109
5.2. Seam 拦截器..............................................................................................................................................................110
5.3. 管理异常.....................................................................................................................................................................112
5.3.1. 异常和事务..................................................................................................................................................... 112
5.3.2. 激活Seam 异常处理...................................................................................................................................... 113
4 / 347
5.3.3. 使用注解处理异常......................................................................................................................................... 113
5.3.4. 用XML 处理异常.......................................................................................................................................... 114
5.3.5. 一些常见的异常............................................................................................................................................. 115
Chapter 6. 对话以及工作区管理..............................................................................................................................................116
6.1. Seam 的对话模型.......................................................................................................................................................116
6.2. 嵌套对话.....................................................................................................................................................................118
6.3. 使用GET 请求来开始一个对话............................................................................................................................... 118
6.4. 利用<s:link>以及<s:button>......................................................................................................................................119
6.5. 成功信息.................................................................................................................................................................... 121
6.6. 使用“显式”的对话id.................................................................................................................................................121
6.7. 工作区管理................................................................................................................................................................ 122
6.7.1. 工作区管理及JSF 导航................................................................................................................................. 122
6.7.2. 工作区管理和jPDL
页面
流........................................................................................................................... 122
6.7.3. 对话转换器..................................................................................................................................................... 123
6.7.4. 对话列表......................................................................................................................................................... 124
6.7.5. 导航控件......................................................................................................................................................... 125
6.8. 对话组件和JSF 组件绑定........................................................................................................................................ 125
6.9. 对话组件的并发调用................................................................................................................................................ 126
6.9.1. RichFaces Ajax................................................................................................................................................ 127
Chapter 7.
页面
流和业务流程..................................................................................................................................................128
7.1. Seam 中的
页面
流...................................................................................................................................................... 128
7.1.1. 两种导航模型................................................................................................................................................. 128
7.1.2. Seam 和后退按钮........................................................................................................................................... 131
7.2. 使用jPDL
页面
流......................................................................................................................................................132
7.2.1. 安装
页面
流..................................................................................................................................................... 132
7.2.2. 开始
页面
流..................................................................................................................................................... 133
7.2.3.
页面
节点和跳转............................................................................................................................................. 134
7.2.4. 流程控制......................................................................................................................................................... 135
7.2.5. 流程的结束..................................................................................................................................................... 135
7.2.6.
页面
流组合..................................................................................................................................................... 135
7.3. Seam 中的业务流程管理.......................................................................................................................................... 136
7.4. 使用jPDL 业务流程定义..........................................................................................................................................137
7.4.1. 安装流程定义................................................................................................................................................. 137
7.4.2. 初始化Actor id............................................................................................................................................... 137
7.4.3. 启动一个业务流程......................................................................................................................................... 138
7.4.4. 任务分配......................................................................................................................................................... 138
7.4.5. 任务列表......................................................................................................................................................... 138
7.4.6. 执行一个任务................................................................................................................................................. 139
Chapter 8. Seam 和对象/关系映射...........................................................................................................................................140
8.1. 简介.............................................................................................................................................................................140
8.2. Seam 管理的事务...................................................................................................................................................... 140
8.2.1. 关闭Seam 管理的事务.................................................................................................................................. 141
8.2.2.
配置
Seam 事务管理器.................................................................................................................................. 142
8.2.3. 事务同步......................................................................................................................................................... 142
8.3. Seam 管理的持久化上下文...................................................................................................................................... 142
8.3.1. 在Seam 管理的持久化上下文中使用JPA....................................................................................................143
8.3.2. 使用Seam 管理的Hibernate 会话................................................................................................................. 143
5 / 347
8.3.3. Seam 管理的持久化上下文和原子会话........................................................................................................ 144
8.4. 使用JPA “代理(delegate)”...................................................................................................................................145
8.5. 在EJB-QL/HQL 中使用EL......................................................................................................................................146
8.6. 使用Hibernate 过滤器.............................................................................................................................................. 146
Chapter 9. Seam 中的JSF 表单验证........................................................................................................................................147
Chapter 10. Groovy 集成.......................................................................................................................................................... 152
10.1. Groovy 简介............................................................................................................................................................. 152
10.2. 用Groovy 编写Seam 应用..................................................................................................................................... 152
10.2.1. 编写Groovy 组件.........................................................................................................................................152
10.2.2. seam-gen........................................................................................................................................................ 154
10.3. 部署.......................................................................................................................................................................... 154
10.3.1. 部署Groovy 代码.........................................................................................................................................155
10.3.2. 开发时部署本地.groovy 文件.......................................................................................................................155
10.3.3. seam-gen........................................................................................................................................................ 155
Chapter 11. Seam 应用程序框架..............................................................................................................................................155
11.1. 简介...........................................................................................................................................................................156
11.2. Home 对象................................................................................................................................................................157
11.3. Query 对象................................................................................................................................................................161
11.4. Controller 对象......................................................................................................................................................... 163
Chapter 12. Seam 和JBoss 规则.............................................................................................................................................. 164
12.1. 安装规则.................................................................................................................................................................. 164
12.2. 在Seam 组件中使用规则....................................................................................................................................... 165
12.3. 在jBPM 流程定义中使用规则...............................................................................................................................166
Chapter 13. 安全........................................................................................................................................................................168
13.1. 概述.......................................................................................................................................................................... 168
13.1.1. 哪种模式更适合我的应用程序呢?............................................................................................................168
13.2. 需求.......................................................................................................................................................................... 168
13.3. 取消安全.................................................................................................................................................................. 168
13.4. 验证.......................................................................................................................................................................... 169
13.4.1.
配置
............................................................................................................................................................... 169
13.4.2. 编写验证方法............................................................................................................................................... 169
13.4.3. 编写登录表单............................................................................................................................................... 171
13.4.4. 简化
配置
- 概述..........................................................................................................................................172
13.4.5. 处理安全异常............................................................................................................................................... 172
13.4.6. 登录重定向................................................................................................................................................... 172
13.4.7. HTTP 验证.................................................................................................................................................... 173
13.4.8. 高级验证特性............................................................................................................................................... 174
13.5.
错误
消息.................................................................................................................................................................. 174
13.6. 授权.......................................................................................................................................................................... 175
13.6.1. 核心概念....................................................................................................................................................... 175
13.6.2. 保护组件....................................................................................................................................................... 175
13.6.3. 用户
界面
中的安全....................................................................................................................................... 177
13.6.4. 保护
页面
....................................................................................................................................................... 178
13.6.5. 保护实体....................................................................................................................................................... 178
13.7. 编写安全规则.......................................................................................................................................................... 180
13.7.1. 许可概述....................................................................................................................................................... 180
13.7.2.
配置
规则文件............................................................................................................................................... 180
6 / 347
13.7.3. 创建安全规则文件....................................................................................................................................... 181
13.8. SSL 安全...................................................................................................................................................................183
13.9. 实现Captcha 测试................................................................................................................................................... 183
13.9.1.
配置
Captcha Servlet.....................................................................................................................................184
13.9.2. 添加Captcha 到
页面
.................................................................................................................................... 184
13.9.3. 定制Captcha 图片........................................................................................................................................ 184
Chapter 14. 国际化和主题........................................................................................................................................................185
14.1. 本地化...................................................................................................................................................................... 185
14.2. 标签.......................................................................................................................................................................... 186
14.2.1. 定义标签....................................................................................................................................................... 186
14.2.2. 标签显示....................................................................................................................................................... 187
14.2.3. Faces Messages..............................................................................................................................................187
14.3. 时区.......................................................................................................................................................................... 188
14.4. 主题.......................................................................................................................................................................... 188
14.5. 使用cookie 保存locale 和主题设置.......................................................................................................................189
Chapter 15. Seam Text...............................................................................................................................................................190
15.1. 基本格式化.............................................................................................................................................................. 190
15.2. 输入代码和有特殊字符的文本............................................................................................................................... 192
15.3. 链接.......................................................................................................................................................................... 193
15.4. 输入HTML.............................................................................................................................................................. 193
Chapter 16. iText PDF 生成...................................................................................................................................................... 193
16.1. 使用PDF 支持......................................................................................................................................................... 193
16.1.1. 创建一个文档............................................................................................................................................... 194
16.1.2. 基本的文本元素........................................................................................................................................... 194
16.1.3.
页
眉和
页
脚................................................................................................................................................... 197
16.1.4. 章节............................................................................................................................................................... 198
16.1.5. 列表............................................................................................................................................................... 199
16.1.6. 表格............................................................................................................................................................... 200
16.1.7. 文档常量....................................................................................................................................................... 202
16.1.8. iText
配置
...................................................................................................................................................... 202
16.2. 图表.......................................................................................................................................................................... 203
16.3. 柱状图编码.............................................................................................................................................................. 207
16.4. 更详细的文档.......................................................................................................................................................... 208
Chapter 17. 电子邮件................................................................................................................................................................208
17.1. 创建一条消息.......................................................................................................................................................... 208
17.1.1. 附件............................................................................................................................................................... 209
17.1.2. HTML/Text 交替部分..................................................................................................................................210
17.1.3. 多个收件人................................................................................................................................................... 211
17.1.4. 多条信息....................................................................................................................................................... 211
17.1.5.
模板
................................................................................................................................................................211
17.1.6. 国际化........................................................................................................................................................... 212
17.1.7. 其它的标识头............................................................................................................................................... 212
17.2. 接收邮件.................................................................................................................................................................. 213
17.3.
配置
.......................................................................................................................................................................... 213
17.3.1. mailSession..................................................................................................................................................214
17.4. Meldware.................................................................................................................................................................. 214
17.5. 标签.......................................................................................................................................................................... 215
7 / 347
Chapter 18. 异步和消息............................................................................................................................................................217
18.1. 异步.......................................................................................................................................................................... 217
18.1.1. 异步方法....................................................................................................................................................... 218
18.1.2. 包含Quartz Dispatcher 的异步方法.............................................................................................................220
18.1.3. 异步事件....................................................................................................................................................... 223
18.2. Seam 中的消息........................................................................................................................................................ 223
18.2.1.
配置
............................................................................................................................................................... 223
18.2.2. 发送消息....................................................................................................................................................... 223
18.2.3. 利用消息驱动Bean 接收消息......................................................................................................................224
18.2.4. 在客户端接收消息....................................................................................................................................... 224
Chapter 19. 缓存........................................................................................................................................................................225
19.1. 在Seam 中使用JBossCache...................................................................................................................................225
19.2.
页
片段缓存.............................................................................................................................................................. 226
Chapter 20. Web Services.......................................................................................................................................................... 227
20.1.
配置
和打包.............................................................................................................................................................. 227
20.2. 对话的Web Services................................................................................................................................................228
20.2.1. 建议策略....................................................................................................................................................... 229
20.3. Web Servic 范例....................................................................................................................................................... 229
Chapter 21. Remoting................................................................................................................................................................230
21.1.
配置
.......................................................................................................................................................................... 231
21.2. Seam 对象.................................................................................................................................................................231
21.2.1. Hello World 示例.......................................................................................................................................... 231
21.2.2. Seam.Component...........................................................................................................................................233
21.2.3. Seam.Remoting..............................................................................................................................................235
21.3. EL 表达式求值........................................................................................................................................................ 235
21.4. 客户端接口.............................................................................................................................................................. 235
21.5. 上下文...................................................................................................................................................................... 236
21.5.1. 设置和读取对话ID......................................................................................................................................236
21.5.2. 当前对话范围内的远程调用........................................................................................................................ 236
21.6. 批量请求.................................................................................................................................................................. 237
21.7. 使用数据类型.......................................................................................................................................................... 237
21.7.1. Primitives / Basic 类型.................................................................................................................................237
21.7.2. JavaBeans...................................................................................................................................................... 237
21.7.3. Date 和Time................................................................................................................................................. 238
21.7.4. Enums 枚举类型.......................................................................................................................................... 238
21.7.5. Collections 集合........................................................................................................................................... 238
21.8. 调试.......................................................................................................................................................................... 239
21.9. 加载消息.................................................................................................................................................................. 239
21.9.1. 修改信息....................................................................................................................................................... 239
21.9.2. 隐藏加载信息............................................................................................................................................... 239
21.9.3.
自定义
加载指示器....................................................................................................................................... 240
21.10. 控制返回数据........................................................................................................................................................ 240
21.10.1. 一般字段的约束......................................................................................................................................... 241
21.10.2. 集合和映射的约束..................................................................................................................................... 241
21.10.3. 特定类型对象的约束................................................................................................................................. 241
21.10.4. 组合约束..................................................................................................................................................... 241
21.11. JMS 消息................................................................................................................................................................ 242
8 / 347
21.11.1.
配置
..............................................................................................................................................................242
21.11.2. 订阅JMS 主题............................................................................................................................................ 242
21.11.3. 退订主题..................................................................................................................................................... 242
21.11.4. 调整轮询过程............................................................................................................................................. 242
Chapter 22. Seam 和Google 的Web 工具包(GWT)................................................................................................................243
22.1.
配置
.......................................................................................................................................................................... 243
22.2. 准备你的组件.......................................................................................................................................................... 243
22.3. 将GWT 小组件接到Seam 组件............................................................................................................................. 244
22.4. GWT Ant Targets...................................................................................................................................................... 246
Chapter 23. Spring Framework 集成........................................................................................................................................ 247
23.1. 把Seam 组件注入Spring Bean 中.......................................................................................................................... 248
23.2. 将Spring Bean 注入到Seam 组件中...................................................................................................................... 249
23.3. 将Spring Bean 转换为Seam 组件.......................................................................................................................... 250
23.4. Seam 作用域的Spring Bean................................................................................................................................... 250
23.5. 使用Spring PlatformTransactionManagement........................................................................................................251
23.6. 在Spring 中使用Seam 管理的持久化上下文....................................................................................................... 251
23.7. 在Spring 中使用Seam 管理的Hibernate 会话......................................................................................................253
23.8. 作为Seam 组件的Spring 应用上下文................................................................................................................... 253
23.9. 使用Spring TaskExecutor 的@Asynchronous.........................................................................................................253
Chapter 24. Hibernate Search.................................................................................................................................................... 254
24.1. 简介.......................................................................................................................................................................... 254
24.2.
配置
.......................................................................................................................................................................... 254
Note............................................................................................................................................................................255
Note............................................................................................................................................................................255
24.3. 用法.......................................................................................................................................................................... 256
Note............................................................................................................................................................................256
Caution.......................................................................................................................................................................257
Chapter 25. Seam
配置
和Seam 应用程序打包........................................................................................................................258
25.1. Seam 基本
配置
........................................................................................................................................................ 258
25.1.1. 将Seam 与JSF 和servlet 容器集成.......................................................................................................... 258
25.1.2. 使用Facelets................................................................................................................................................. 258
25.1.3. Seam Resource Servlet.................................................................................................................................. 259
25.1.4. Seam Servlet 过滤器.....................................................................................................................................259
25.1.5. 将Seam 与你的EJB 容器集成.................................................................................................................... 262
25.1.6. 切记!........................................................................................................................................................... 263
25.2. 在Java EE 5 中
配置
Seam...................................................................................................................................... 264
25.2.1. 打包............................................................................................................................................................... 264
25.3. 在J2EE 中
配置
Seam..............................................................................................................................................265
25.3.1. 在Seam 中引导Hibernate........................................................................................................................... 266
25.3.2. 在Seam 中引导JPA.....................................................................................................................................266
25.3.3. 打包............................................................................................................................................................... 266
25.4. 在Java SE 中
配置
Seam,没有内嵌JBoss............................................................................................................267
25.5. 用嵌入式的JBoss 在Java SE 中
配置
Seam...........................................................................................................267
25.5.1. 安装嵌入式的JBoss.....................................................................................................................................268
25.5.2. 打包............................................................................................................................................................... 268
25.6. 在Seam 中
配置
jBPM.............................................................................................................................................269
25.6.1. 打包............................................................................................................................................................... 270
9 / 347
25.7. 在Portal 中
配置
Seam.............................................................................................................................................271
25.8. 在JBoss AS 中
配置
SFSB 和会话超时...................................................................................................................271
Chapter 26. Seam on OC4J........................................................................................................................................................272
26.1. jee5/booking 实例................................................................................................................................................... 272
26.1.1. 预订酒店实例的依赖包............................................................................................................................... 273
26.1.2. OC4J 需要的额外依赖包..............................................................................................................................273
26.1.3.
配置
文件的改变........................................................................................................................................... 273
26.1.4. 构建jee5/booking 实例............................................................................................................................... 274
26.2. 部署Seam 应用程序到OC4J 中............................................................................................................................. 274
26.3. 将一个使用seam-gen 创建的应用程序部署到OC4J 中。.............................................................................. 275
26.3.1. seam-gen 之类的应用程序的OC4J 部署描述符........................................................................................ 280
Chapter 27. Seam 注解..............................................................................................................................................................281
27.1. 用于定义组件的注解.............................................................................................................................................. 281
27.2. 用于双向注入的注解.............................................................................................................................................. 283
27.3. 关于组件生命周期方法的注解............................................................................................................................... 286
27.4. 用于声明上下文的注解.......................................................................................................................................... 286
27.5. 用于在J2EE 环境中使用Seam JavaBean 组件的注解......................................................................................... 289
27.6. 用于异常的注解...................................................................................................................................................... 289
27.7. 用于Seam Remoting 的注解................................................................................................................................. 290
27.8. 用于Seam 拦截器(interceptor)的注解...............................................................................................................290
27.9. 用于异步(asynchronicity)的注解....................................................................................................................... 291
27.10. 用于JSF 的注解.................................................................................................................................................... 291
27.10.1. 和dataTable 一起使用的注解...................................................................................................................292
27.11. 用于数据绑定的元数据注解................................................................................................................................ 292
27.12. 用于封包(packing)的注解.................................................................................................................................. 293
27.13. 用于和Servlet 容器集成的注解............................................................................................................................293
Chapter 28. 内置Seam 组件.....................................................................................................................................................294
28.1. 上下文注入组件...................................................................................................................................................... 294
28.2. 工具组件.................................................................................................................................................................. 294
28.3. 组件的国际化和主题.............................................................................................................................................. 296
28.4. 控制对话组件.......................................................................................................................................................... 297
28.5. 与jBPM 相关的组件...............................................................................................................................................298
28.6. 与安全相关的组件.................................................................................................................................................. 300
28.7. 与JMS 相关的组件.................................................................................................................................................300
28.8. 与邮件相关的组件.................................................................................................................................................. 300
28.9. 基础组件.................................................................................................................................................................. 301
28.10. 杂项组件................................................................................................................................................................ 303
28.11. 特殊组件.................................................................................................................................................................303
Chapter 29. Seam 的JSF 控件..................................................................................................................................................305
29.1. 标签.......................................................................................................................................................................... 305
29.2. 注解.......................................................................................................................................................................... 319
Chapter 30. 表达式语言增强....................................................................................................................................................320
30.1. 参数方法绑定.......................................................................................................................................................... 320
30.1.1. 用法............................................................................................................................................................... 320
30.1.2. 限制............................................................................................................................................................... 321
30.2. 参数值绑定.............................................................................................................................................................. 321
30.3. 映射.......................................................................................................................................................................... 322
10 / 347
Chapter 31. 测试Seam 应用程序.....................................................................................................
只需点击一下即可编辑Luminate Online
页面
。
通过此扩展,可以更轻松地编辑组织的Luminate Online网站上的
页面
。在查看“在线发光”
页面
时,铅笔图标将出现在浏览器的地址栏中。单击此图标将打开一个新选项卡,并将您直接带到您正在查看的
页面
的管理
界面
CHANGELOG ========== **版本:1.12(2017年11月15日)** *修复了一些小
错误
。版本:1.11(30-OCT-2015)*添加了对编辑国家队顶级赛事,顶级团队,顶级参与者和搜索
页面
的支持。版本:1.10(2013年7月24日)*添加了对编辑进度表的支持
*添加了在查看ReceiptViewer
页面
时到Receipt Manager的链接
*添加了对编辑安全的TeamRaiser
页面
的支持
*添加了对编辑为PageBuilder
页面
,StoryBuilder文章和事件创建的
自定义
TellAFriend
页面
的支持。版本:1.9(05-JUL-2013)*修复了从JServ迁移到
Tomcat
后,Luminate Online URL语法更改引起的
错误
。版本:1.8(2013年3月29日)*添加了对编辑“奖励”
页面
的支持
*添加了在查看ReceiptRequest
页面
时到Receipt Manager的链接。版本:1.7(05-MAR-2013)*修复了带有“操作警报执行操作
页面
”编辑链接的
错误
。版本:1.6(19-FEB-2013)*添加了对在图像库中编辑图像的支持
*添加了对查看API响应文档时编辑API
配置
的支持
*添加了对查看AjaxProxy servlet时编辑AjaxProxy设置的支持。版本:1.5(08-FEB-2013)*添加了对编辑“俱乐部”和“目录”
页面
的支持
*修复了以“ view-source:”开头的Chrome URL的问题。版本:1.4(09-JAN-2013)*添加了对编辑ConsProfileUser,ConsInterestsUser,礼品服务中心和个人事件的支持。版本:1.3(2013年1月4日)*电子商务确认
页面
的小
错误
修复。版本:1.2(2012年12月17日)*添加了对从GigyaLogin
页面
编辑开放式身份验证设置的支持
*添加了对编辑相册的支持。版本:1.1(28-NOV-2012)*添加了对编辑经典捐赠形式的支持。
支持语言:English
springboot
自定义
404
500错误
页面
1:使用thymeleaf
模板
使用thymeleaf
模板
的时候,boot会先到==/resources/templates/error/==文件夹下找
自定义
错误
的
页面
错误
页面
命名规则:
错误
码.html
2: 没有使用thymeleaf
模板
没有使用thymeleaf
模板
的时候,会去静态资源==/static/error==寻找
404
.htm、
500
.html的
错误
提示
页面
,
3:
自定义
错误
页面
错误
代码的类型很多,如
400
、403、
404
等等,如果按
tomcat
400
错误
跳转
自定义
页面
springMVC在web.xml设置可以拦截
404
,
500
等
错误
跳转到
自定义
页面
,但是无法拦截
400
错误
。
<error-page>
<error-code>
404
</error-code>
<location>./
404
.jsp</location>
</error-page>
<error-page>
<error-code>
500
</error-cod
MYSQL-5.7.35
REDIS-5.X
----------------------------实现功能如下------------------------------------
1.CAS-集成mysql
2.CAS-日志审计
3.CAS-连接池
配置
4.CAS-
自定义
错误
信息
5.CAS-识别json文件
6.CAS-
页面
缓存记住我
7.CAS-cookie设置
8.CAS-tgc设置
9.CAS-登出
10.CAS-redisCluster集群存储ticket(相应redis必须
配置
成cluster集群)
11.CAS-加密存储ticket
12.CAS-实习动态验证码
13.CAS-实习
自定义
登录
14.CAS-实现
自定义
返回用户登录信息
15.CAS-
页面
缓存记住我
------------------------------建表脚本在文件里登录用户/密码:ll/123456
## 系统模块说明
1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已
2. doc: 文档目录,里面有数据库生成语句,采用的是MySQL5.0,数据库名为db_test
3. spring-node-1: 应用1
4. spring-node-2: 应用2
其中node1跟node2都是采用spring + springMVC + mybatis 框架,使用maven做项目管理
## cas集成说明
1.首先采用的是查数据库的方式来校验用户身份的,在cas/WEB-INF/deployerConfigContext.xml中第135行构建了这个类型
``` xml
其中QueryDatabaseAuthenticationHandler这个类是
自定义
构建的,在cas/WEB-INF/lib/cas-jdbc-1.0.0.jar里面,有兴趣的同学可以发编译看下,关于几个属性的说明
1. dataSource: 数据源,
配置
MySQL的连接信息
2. passwordEncoder: 加密方式,这里用的是MD5
3. sql: sql查询语句,这个语句就是根据用户输入的账号查询其密码
#### 以上就是单点登录管理的主要
配置
## 应用系统的
配置
node1
1. 应用系统采用shiro做权限控制,并且跟cas集成
2. 在/spring-node-1/src/main/resources/conf/shiro.properties 文件中
``` properties
shiro.loginUrl=http://127.0.0.1:8080/cas/login?service=http://127.0.0.1:8081/node1/shiro-cas
shiro.logoutUrl=http://127.0.0.1:8080/cas/logout?service=http://127.0.0.1:8081/node1/shiro-cas
shiro.cas.serverUrlPrefix=http://127.0.0.1:8080/cas
shiro.cas.service=http://127.0.0.1:8081/node1/shiro-cas
shiro.failureUrl=/users/loginSuccess
shiro.successUrl=/users/loginSuccess
其中shiro.loginUrl 跟 shiro.logoutUrl的前面是cas验证的地址,后面的是我们应用系统的地址,这样
配置
的方式是为了在访问我们的应用系统的时候,先到cas进行验证,如果验证成功了,cas将重定向到shiro.successUrl 所表示的地址
3.在/spring-node-1/src/main/resources/conf/shiro.xml 文件中
``` xml
> 其中shiroFilter这个类主要用于需要拦截的url请求,需要注意的是这个是shiro的拦截,我们还需要
配置
cas的过滤
配置
casFilter
> casRealm这个类是需要我们自己实现的,主要用于shiro的权限验证,里面的属性说明如下
1. defaultRoles: 默认的角色
2. casServerUrlPrefix: cas地址
3. casService: 系统应用地址
最后我们还需要在/spring-node-1/src/main/webapp/WEB-INF/web.xml 文件中
配置
相关的过滤器拦截全部请求
``` xml
shiroFilter
org.springframework.web.filter.DelegatingFilterProxy
targetFilterLifecycle
shiroFilter
## 系统运行
1. 端口说明,cas:8080,node1:8081,node2:8082,大家可以采用maven提供的
tomcat
7插件,
配置
如下:
``` xml
org.apache.
tomcat
.maven
tomcat
7-maven-plugin
UTF-8
tomcat
7
/node1
这样的
配置
,我们甚至都不需要
配置
tomcat
服务器了,建议这种方式
2.各个模块的访问地址
> cas:http://127.0.0.1:8080/cas
> node1:http://127.0.0.1:8081/node1
> node2:http://127.0.0.1:8082/node2
3.访问系统
> 输入 http://127.0.0.1:8081/node1/shiro-cas ,进入cas验证
> 输入用户名 admin,密码 admin@2015,验证成功后将会重定向到http://127.0.0.1:8081/node1//users/loginSuccess ,也就是node1系统的主
页
,里面的节点2代表的是node2系统的主
页
,你会发现我们不需要登录到node2系统就能访问其中的系统了
一直使用
tomcat
,今天想到一个问题,
自定义
404
错误
页面
, 为了获得很好的用户感受,是不应当向用户暴露
404
这样的
页面
的, 问题的出发点是我在Struts2中定义
错误
页面
, 在Struts2中是这样定义的:
<default name=pagenotfound></default>
<action name=pagenotfound>
<result>/pagenotfound.html</result>
</action>
这就是说在访问action是.如果没有找到action就访问这个
页面
,但是我如果我不用.d
第1种方式:
Tomcat
直接处理web.xml<error-page>
<error-code>
404
</error-code>
<location>/error/
404
.htm</location>
</error-page> 这种只能展示纯静态的
页面
,非常不灵活。第2种方式:利用Sprin...
说明:/xxx/xxx/xxx/xxx/webapps修改的项目默认路径/xxx/xxx/xxx/wxs_home 修改的默认项目,放入
自定义
的首
页
index.jsp/index.html ;顺便放入
错误
提示
页面
error.jsp
错误
提示
页面
:
error.jsp
<%@ page language="java" contentTy
/usr/local/apache-
tomcat
-8.5.87/bin/catalina.sh:行505: /usr/local/jdkjdk1.8.0_361//jre/bin/java: 没有那个文件或目录