<?php
header('Content-type: text/html; charset=utf-8');
// The following variables values must reflect your installation needs.
$aspell_prog = '"C:\Program Files\Aspell\bin\aspell.exe"'; // by FredCK (for Windows)
//$aspell_prog = 'aspell'; // by FredCK (for Linux)
$lang = 'en_US';
$aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt"; // by FredCK
$tempfiledir = "./";
$spellercss = '../spellerStyle.css'; // by FredCK
$word_win_src = '../wordWindow.js'; // by FredCK
$textinputs = $_POST['textinputs']; # array
$input_separator = "A";
# set the JavaScript variable to the submitted text.
# textinputs is an array, each element corresponding to the (url-encoded)
# value of the text control submitted for spell-checking
function print_textinputs_var() {
global $textinputs;
foreach( $textinputs as $key=>$val ) {
# $val = str_replace( "'", "%27", $val );
echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n";
}
}
# make declarations for the text input index
function print_textindex_decl( $text_input_idx ) {
echo "words[$text_input_idx] = [];\n";
echo "suggs[$text_input_idx] = [];\n";
}
# set an element of the JavaScript 'words' array to a misspelled word
function print_words_elem( $word, $index, $text_input_idx ) {
echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n";
}
# set an element of the JavaScript 'suggs' array to a list of suggestions
function print_suggs_elem( $suggs, $index, $text_input_idx ) {
echo "suggs[$text_input_idx][$index] = [";
foreach( $suggs as $key=>$val ) {
if( $val ) {
echo "'" . escape_quote( $val ) . "'";
if ( $key+1 < count( $suggs )) {
echo ", ";
}
}
}
echo "];\n";
}
# escape single quote
function escape_quote( $str ) {
return preg_replace ( "/'/", "\\'", $str );
}
# handle a server-side error.
function error_handler( $err ) {
echo "error = '" . preg_replace( "/['\\\\]/", "\\\\$0", $err ) . "';\n";
}
## get the list of misspelled words. Put the results in the javascript words array
## for each misspelled word, get suggestions and put in the javascript suggs array
function print_checker_results() {
global $aspell_prog;
global $aspell_opts;
global $tempfiledir;
global $textinputs;
global $input_separator;
$aspell_err = "";
# create temp file
$tempfile = tempnam( $tempfiledir, 'aspell_data_' );
# open temp file, add the submitted text.
if( $fh = fopen( $tempfile, 'w' )) {
for( $i = 0; $i < count( $textinputs ); $i++ ) {
$text = urldecode( $textinputs[$i] );
// Strip all tags for the text. (by FredCK - #339 / #681)
$text = preg_replace( "/<[^>]+>/", " ", $text ) ;
$lines = explode( "\n", $text );
fwrite ( $fh, "%\n" ); # exit terse mode
fwrite ( $fh, "^$input_separator\n" );
fwrite ( $fh, "!\n" ); # enter terse mode
foreach( $lines as $key=>$value ) {
# use carat on each line to escape possible aspell commands
fwrite( $fh, "^$value\n" );
}
}
fclose( $fh );
# exec aspell command - redirect STDERR to STDOUT
$cmd = "$aspell_prog $aspell_opts < $tempfile 2>&1";
if( $aspellret = shell_exec( $cmd )) {
$linesout = explode( "\n", $aspellret );
$index = 0;
$text_input_index = -1;
# parse each line of aspell return
foreach( $linesout as $key=>$val ) {
$chardesc = substr( $val, 0, 1 );
# if '&', then not in dictionary but has suggestions
# if '#', then not in dictionary and no suggestions
# if '*', then it is a delimiter between text inputs
# if '@' then version info
if( $chardesc == '&' || $chardesc == '#' ) {
$line = explode( " ", $val, 5 );
print_words_elem( $line[1], $index, $text_input_index );
if( isset( $line[4] )) {
$suggs = explode( ", ", $line[4] );
} else {
$suggs = array();
}
print_suggs_elem( $suggs, $index, $text_input_index );
$index++;
} elseif( $chardesc == '*' ) {
$text_input_index++;
print_textindex_decl( $text_input_index );
$index = 0;
} elseif( $chardesc != '@' && $chardesc != "" ) {
# assume this is error output
$aspell_err .= $val;
}
}
if( $aspell_err ) {
$aspell_err = "Error executing `$cmd`\\n$aspell_err";
error_handler( $aspell_err );
}
} else {
error_handler( "System error: Aspell program execution failed (`$cmd`)" );
}
} else {
error_handler( "System error: Could not open file '$tempfile' for writing" );
}
# close temp file, delete file
unlink( $tempfile );
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="<?php echo $spellercss ?>" />
<script language="javascript" src="<?php echo $word_win_src ?>"></script>
<script language="javascript">
var suggs = new Array();
var words = new Array();
var textinputs = new Array();
var error;
<?php
print_textinputs_var();
print_checker_results();
?>
var wordWindowObj = new wordWindow();
wordWindowObj.originalSpellings = words;
wordWindowObj.suggestions = suggs;
wordWindowObj.textInputs = textinputs;
function init_spell() {
// check if any error occured during server-side processing
if( error ) {
alert( error );
} else {
// call the init_spell() function in the parent frameset
if (parent.frames.length) {
parent.init_spell( wordWindowObj );
} else {
alert('This page was loaded outside of a frameset. It might not display properly');
}
}
}
</script>
</head>
<!-- <body onLoad="init_spell();"> by FredCK -->
<body onLoad="init_spell();" bgcolor="#ffffff">
<script type="text/javascript">
wordWindowObj.writeBody();
</script>
</body>
</html>
jeecms-2012.rar
需积分: 0 201 浏览量
更新于2023-11-10
收藏 32.11MB RAR 举报
【Jeecms-2012】是一款基于Java技术栈的开源内容管理系统,适用于学习、练手以及作为毕业设计或课程设计的项目基础。这款系统采用JSP作为前端展示技术,Java作为后端编程语言,并涉及到SQL数据库操作,提供了一个完整的网站开发框架。
在Java世界里,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将Java代码嵌入到HTML页面中,实现了业务逻辑与页面展示的分离。JSP通过Servlet技术来处理用户请求,使得开发者可以更专注于页面的设计和内容的呈现,而无需关注底层的HTTP协议细节。
Java则是一种广泛应用于Web开发的后端编程语言,以其"一次编写,到处运行"的特性受到青睐。在Jeecms-2012中,Java主要负责处理业务逻辑、数据访问以及服务器端的功能实现。Java的面向对象特性使得代码结构清晰,易于维护,同时丰富的类库如Spring、Hibernate等,提供了强大的支持。
SQL(Structured Query Language)是用于管理关系数据库的标准语言,Jeecms-2012必然涉及到数据库操作。通过SQL,开发者可以创建、查询、更新和删除数据库中的记录,以满足系统对数据存储和检索的需求。在实际项目中,可能使用到的包括MySQL、Oracle或PostgreSQL等数据库管理系统。
Jeecms-2012的源码分析可以分为以下几个部分:
1. **前端展示**:JSP文件包含HTML、CSS和JavaScript,负责页面布局和交互。开发者可以通过学习JSP语法,理解如何在页面中嵌入Java表达式和脚本,实现动态内容的生成。
2. **后端控制**:Java类文件处理HTTP请求,调用业务服务并返回响应。这里可以学习到Servlet、Controller模式等概念,以及如何组织业务逻辑。
3. **数据库设计**:查看项目的SQL脚本和数据访问层(DAO)代码,可以学习到如何设计数据库表结构,以及如何使用Java与数据库进行交互,例如通过JDBC或者ORM框架如Hibernate。
4. **模板引擎**:Jeecms可能采用了某种模板引擎,如FreeMarker或Velocity,用于动态生成HTML页面。理解模板引擎的工作原理,能提高页面渲染的效率和灵活性。
5. **安全机制**:分析系统中的登录认证、权限控制等模块,了解如何防止SQL注入、XSS攻击等常见的网络安全问题。
6. **集成框架**:如果Jeecms使用了Spring、Struts或MyBatis等框架,那么理解这些框架的工作原理和配置方式,对于提升Java Web开发技能非常有帮助。
7. **缓存策略**:查看系统是否使用了缓存技术(如EhCache或Redis),以提高数据访问速度,降低数据库压力。
8. **部署与调试**:学习如何将项目部署到服务器,以及如何使用IDE进行调试,理解项目运行环境的配置。
Jeecms-2012作为一个综合性的Web应用项目,涵盖了Java Web开发的多个重要环节,对于学习者来说,无论是对JSP、Java、SQL还是Web开发流程,都有很高的学习价值。通过深入研究这个项目,你可以掌握从页面设计到数据库操作,再到服务器端编程的全方位技能。
马coder
- 粉丝: 1249
- 资源: 6593
最新资源
- 快速定制中国传统节日头像(源码)
- hcia 复习内容的实验
- 准Z源光伏并网系统MATLAB仿真模型,采用了三次谐波注入法SPWM调制,具有更高的电压利用效率 并网部分采用了电压外环电流内环 电池部分采用了扰动观察法,PO Z源并网和逆变器研究方向的同学可
- 海面目标检测跟踪数据集.zip
- 欧美风格, 节日主题模板
- 西门子1200和三菱FXU通讯程序
- 11种概率分布的拟合与ks检验,可用于概率分析,可靠度计算等领域 案例中提供11种概率分布,具体包括:gev、logistic、gaussian、tLocationScale、Rayleigh、Log
- 机械手自动排列控制PLC与触摸屏程序设计
- uDDS源程序publisher
- 中国风格, 节日 主题, PPT模板