- node.js漏洞总结
carrot11223
网络安全node.js漏洞
js开发的web应用和php/Java最大的区别就是js可以通过查看源代码的方式查看到编写的代码,但是php/Java的不能看到,也就是说js开发的web网页相当于可以进行白盒测试。流行的js框架有:1.AngularJS2.ReactJS3.Vue4.jQuery5.BackboneJS6.NodeJS7.Ember8.Meteor9.Polymer10.Aurelia那怎么判断一个网站是不是由
- 毕业设计——基于spark的电影推荐系统,包括基于ALS、LFM的离线推荐、实时推荐
Python豆豆
毕业设计指导及定制课程设计spark大数据
项目以推荐系统建设领域知名的经过修改过的MovieLens数据集作为依托,以电影网站真实业务数据架构为基础,包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。提供了从前端应用、后台服务、算法设计实现、平台部署等多方位的闭环的业务实现【用户可视化】:主要负责实现和用户的交互以及业务数据的展示,主体采用AngularJS2进行实现,部署在Apache服务上。【综
- Angular入门
writeanewworld
1.clicli命令行界面,指的是可以在用户提示符下键入可执行指令的界面,通常不支持鼠标,用户通过键盘输入命令,计算机接受命令后执行。2.npmnpm是随同nodejs一起安装的包管理工具,可以从npm的服务器上下载所有已经有的包,很方便实用3.angularAngularJS2是Angular1.x的升级版本,性能上得到显著的提高,能很好的支持Web开发组件。AngularJS2发布于2016年
- Angular 从零开始,快速上手
JAVA开发区
前端angular.js前端javascript
Angular从零开始,快速上手一、AngularJS简介1.1AngularJS的背景1.2AngularJS的简介1.3AngularJS概念概述1.4AngularJS特性1.5AngularJS和JQuery比较二、安装AngularJS2.1方式一:使用在线cdn2.2方式二:使用依赖管理工具npm三、AngularJS的生命周期3.1使用步骤3.2生命周期钩子函数四、Angular的基
- angular 控件css_Angular
weixin_39816062
angular控件css
本篇文章介绍的是关于angularjs1.x升级angularjs2+方案,还有介绍了angularjs1.x和angularjs2+的并行,现在我们就一起来看这篇文章吧angular1.x升级angular2+方案我给大家提供的是angular1.x和angular5并行,...这次给大家带来Angular使用UI框架、控件,Angular使用UI框架、控件的注意事项有哪些,下面就是实战案例,一
- AngularJS学习(一)
Web3&Basketball
angular.js学习前端
目录1.引入AngularJS2.创建一个AngularJS应用3.控制器(Controller)4.模型(Model)5.视图(View)6.指令(Directive)7.过滤器(Filter)8.服务(Service)1.引入AngularJS要使用AngularJS,您需要首先引入angular.js文件。这可以通过在HTML文件中使用2.创建一个AngularJS应用在HTML文件中,使用
- angularJS2 滚动条滚动加载更多数据
蓓蓓24
客户提出手机端数据滚动加载更多需求,在知道这个需求后首先想到的是运用第三方控件更方便。然后在网上找了一段时间,终于找到了一款无限滚动加载数据控件angular2-infinite-scroll。简单介绍一下angular2-infinite-scroll:angular2-infinite-scroll是一个AngularJS2的扩展指令,实现了网页的无限滚动的功能,也就是相当于页面滚动到最底部的
- angularJS2 获取input CheckBox的value值,进行选中和取消选中
蓓蓓24
所做项目中有重复显示CheckBox的功能,在全选/全不选按钮选择后更换条件后显示的数据,原本应该显示为选中/不选中的客户,在全选按钮操作后就变为未选中/选中状态;我的思路就是根据条件去更改CheckBox的checked,但是在angularJS2中去获取CheckBox的value值时遇到了困难,无法获取到value;最后在网络上找到了一个方法:(mychk[i]asHTMLInputElem
- Angular: Can't bind to 'ngModel' since it isn't a known property of 'input'问题
gstorm
原因:html代码中出现类似这样的语句,其中使用了[(ngModel)]。在AngularJS2或以上版本中使用了NgModel指令,必须在app.module.ts文件中导入FormsModule模块。解决方法:1.在app.module.ts文件导入语句中添加import{FormsModule}from‘@angular/forms’;2.修改app.module.ts文件@NgModule
- Angularjs2-下拉列表实现(父子组件通信)
Aaaaaaaaaaayou
基于http://valor-software.com/ng2-bootstrap/#/dropdowns做的一个下拉列表控件,优化了如下功能,项目地址列表内容由父组件传递子组件选择框发生变化后会通知父组件demodemo-new.gif列表内容由父组件传递这个主要利用到了ng2的Input,在子组件中声明一个变量,该变量的值可以从父组件获取:import{Component,Input,Outp
- AngularJS的Hello World
小孩真笨
AngularJS不同于AngularJS2,其是一个JS框架,使用方法也和一般的JS框架差不多,无非就是在功能上扩展了html而已。尤其作为JSMVC框架,增加了一些指令之类的。一个基本的HelloWorld程序使用方式如下:Step1:引入JS框架需要注意的是,为加快页面的加载速度,建议在底部引入。Step2:指定AngularJS的应用程序指定应用程序的方法是使用ng-app指令。Step3
- Ionic2实战-Http请求模块设计
逃离火星
前言对于大部分App来说,都有大量前后端交互的需求,而Ionic2基于AngularJS2也提供了完善的Http通信模块,可以让我们方便地进行前后台的通信。步骤Http通信作为业务模块都写在了service文件中,以下步骤都是针对service的操作。1、导入相关包import{Http,Headers,RequestOptions}from'@angular/http';2、初始化header消
- Angular入门到精通系列教程(2) - Angular基本概念
Jack_N
javascript
1.Angular(Angular2)v.s.AngularJS2.检查本地环境的版本3.TypeScript4.AngularCLI5.Angular的版本6.Angular版本如何升级7.依赖注入(dependencyinjection)8.编译-AOT和JIT的区别环境:AngularCLI:11.0.6Angular:11.0.7Node:12.18.3npm:6.14.6IDE:VSCo
- angularjs2环境搭建(webpack)
前方太黑暗
angularjsangularjs2环境搭建
1、首先使用命令安装@angular/clinpminstall-g@angular/cli2、如果不知道安没安装@angular/cli可以使用命令ng-v查看3、使用ngnew项目名称创建名称这个需要安装一会耐心等待。。。。4、本人使用的VisualStudioCode打开项目5、使用ngserve启动项目6、浏览器输入http://localhost:4200出现下图则证明启动成功7、自定义
- angularjs2 简单使用起始篇(一)
mangues
html5agularjs2angularjs2前端
angularjs2简单使用起始篇—基于一个小例子(一)本篇文章基于angularjs2.3.0angularjs2是不同于anjularjs,前者是基于组件的,而后者着是基于demo的。angularjs2比较像RN。组件化是前端的一个趋势,这种方式类似于android的bar,listview等组件,可以直接调用显示,开发者写好组件后,只要关心数据,样式,其他会有组件自动填充完成。因为内容比较
- 跟着angularjs2官方文档学习(一)
沈纵情
angularjs2
import{Component}from'angular2/core';interfaceHero{id:number;name:string;}@Component({selector:'my-app',template:`{{title}}MyHeroes{{hero.id}}{{hero.name}}{{selectedHero.name}}details!id:{{selectedHer
- angularjs1.6.x实例教程
黄泽平
前端集合angularjsangularjs
AngularJS是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。AngularJS现行主要区分为2个版本系列,分别是AngularJS1.x和AngularJS2,两个版本间的使用上有不少的区别,虽说AngularJS2是对AngularJS1.x的升级和精简,但在资料文档
- AngularJS1.0的使用总结笔记------001
古语静水流深
从今天开始,我将会吧我所用到的AngularJS1.0所有的知识进行梳理一遍,写成一篇篇文章,算是对自己知识的一次总结吧。因为马上就要学习和使用AngularJS2.0了。两个框架还是有本质区别的。所以将自己所用的1.0总结下来。首先我们要知道,这个框架诞生的意义是什么,为处理什么问题才诞生的。AngularJS简化了你写DOM的操作,你看不到那些让人头疼的each,append。还你一个清晰地逻
- angularjs2 依赖注入
沈纵情
angularjs2
DependencyInjectionSystem.import('app').catch(function(err){console.error(err);});Loadingmy-app.../***PLUNKERVERSION*(basedonsystemjs.config.jsinangular.io)*SystemconfigurationforAngular2samples*Adjus
- angularjs2 路由之传参
前方太黑暗
angularjs
1、首先开一下效果图初始状态点击英雄1再次点击英雄1注意到上面导航地址的变化了吗http://localhost:4200/hero-list列表页http://localhost:4200/hero/1英雄详情页http://localhost:4200/hero-list;id=1列表页2、路由配置说明:参数是通过接收id,获取到的。3、跳转的写法,2种写法4、看接收参数的ts列表页面参数接收
- AngularJs2 设置懒加载(惰性加载)以及调用API接口的说明
Rex_IT
AngularJs2AngularJs前端开发
前言创建项目命令:ngnew项目名字启动项目:ngserve--port4202不设置端口号默认为4200安装插件和目录结构安装插件npminstall-D@types/jquerynpminstallng2-bootstrapbootstrap–savenpminstalljquery引用插件的js打开angular.json找到”styles”和”scripts”两个标签添加引用【注意有两个位
- angularjs2启动项目报ERROR in AppModule is not an NgModule解决方法
飞向Hadoop
Angularjs
如图:这主要是ts编译器版本问题,一般是因为ts编译器版本过高导致。解决方式:
[email protected]查看安装的typescript版本修改package.json中的typescript版本为2.2.2(注明:不要写为"^2.2.2")删除node_module重新安装cnpminstallnpmlstyp
- 前端项目相关
sundaxiao
前端项目相关
前端项目发展的四个阶段:1、库/框架库:jQuery框架:vue、React、Angularjs2、构建优化选择Gulp,Grunt,Webpack等构建工具,对代码进行压缩、校验,再以页面为单位进行简单的资源合并。3、JavaScript和CSS模块化开发分而治之是软件工程中的重要思想,模块化是目前前端最流行的分治手段。模块化开发的最大价值不是复用,而应该是分治。1)JavaScript模块化开
- angularjs2 启动的时候怎么解决Port 4200 is already in use
flyflyzhao8
Angularjs2
1、相应找到以下目录node_modules/@angular/cli/lib/config/中的schema.json2、搜索到到默认的“4200”端口,3、把4200改为其它的没有被占用的端口,如6200。好了,angularjs2启动的时候端口被占用的问题就轻轻松松的解决啦。
- AngularJS2 学习笔记——TypeScript
谢厂节_编程圈
#JS-HTML
一、创建项目mkdirangular-quickstartcdangular-quickstart二、创建配置文件package.json标记本项目所需的npm依赖包。tsconfig.json定义了TypeScript编译器如何从项目源文件生成JavaScript代码。typings.json为那些TypeScript编译器无法识别的库提供了额外的定义文件。systemjs.config.js为
- 能在多种前端框架下使用的表格控件
weixin_34198762
近几年Web前端框架特别流行,比如AngularJS、AngularJS2、ReactJS、KnockoutJS、VueJS等。表格控件是我们在开发中经常要用到的控件。有没有能够在多种前端控件下都能使用的表格控件?最近研究发现FlexGrid是一款不错的表格控件,它能支持很多主流的框架。这里主要介绍在纯JavaScript和AngularJS下FlexGrid的使用。一、在纯JavaScript下
- Visual Studio Code 快捷键大全(Windows)
weixin_33836874
VisualStudioCode是一款优秀的编辑器,非常适合编写TS以及React。最近在学习AngularJs2,开始使用VSCode,特意整理翻译了一下官网的快捷键。因为已经习惯了Sublime的快捷键,更换到VSCode有些不适应,尤其是Emmet的使用。通用Ctrl+Shift+P,F1打开命令面板Ctrl+P快速打开文件Ctrl+Shift+N打开新窗口/实例Ctrl+Shift+W关闭
- angularjs2 一些报错的概览(数据为json格式)
weixin_30399821
{"Unterminatedstringliteral.":"未终止的字符串文本。","Identifierexpected.":"应为标识符。","'{0}'expected.":"应为“{0}”。","Afilecannothaveareferencetoitself.":"文件不能引用自身。","Trailingcommanotallowed.":"不允许使用尾随逗号。","'*/'expe
- 浅谈前端项目发展的四个阶段——库/框架、构建优化、模块化开发、组件化开发和资源管理
筱葭
Web
前端项目发展的四个阶段:1、库/框架库:jQuery框架:vue、React、Angularjs2、构建优化选择Gulp,Grunt,Webpack等构建工具,对代码进行压缩、校验,再以页面为单位进行简单的资源合并。3、JavaScript和CSS模块化开发分而治之是软件工程中的重要思想,模块化是目前前端最流行的分治手段。模块化开发的最大价值不是复用,而应该是分治。1)JavaScript模块化开
- Deepin 20 UOS 20 安装ADF开发环境
大帝之澜
DeepinLinux平台开发者
1.ADF文档官网:https://www.alfresco.com/abn/adf/docs/2.安装Node.js,npm,AngularJS23.安装Yeomannpminstall-gyonpminstall-ggenerator-alfresco-adf-app@latest4.创建ADF应用yoalfresco-adf-app5.创建网页component组件/veiw视图nggene
- html
周华华
html
js
1,数组的排列
var arr=[1,4,234,43,52,];
for(var x=0;x<arr.length;x++){
for(var y=x-1;y<arr.length;y++){
if(arr[x]<arr[y]){
&
- 【Struts2 四】Struts2拦截器
bit1129
struts2拦截器
Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。
Struts2中自定义拦截器的步骤是:
- make:cc 命令未找到解决方法
daizj
linux命令未知make cc
安装rz sz程序时,报下面错误:
[root@slave2 src]# make posix
cc -O -DPOSIX -DMD=2 rz.c -o rz
make: cc:命令未找到
make: *** [posix] 错误 127
系统:centos 6.6
环境:虚拟机
错误原因:系统未安装gcc,这个是由于在安
- Oracle之Job应用
周凡杨
oracle job
最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。
一:查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行
- 多线程机制
朱辉辉33
多线程
转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx
程序、进程和线程:
程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的
- web报表工具FineReport使用中遇到的常见报错及解决办法(一)
老A不折腾
web报表finereportjava报表报表工具
FineReport使用中遇到的常见报错及解决办法(一)
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、address pool is full:
含义:地址池满,连接数超过并发数上
- mysql rpm安装后没有my.cnf
林鹤霄
没有my.cnf
Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r
- Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题
aigo
root
原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/
Step 4: Run ADB command from your PC
On the PC, you need install Amazon Fire ADB driver and instal
- javascript 中var提升的典型实例
alxw4616
JavaScript
// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧
myname = 'global';
var fn = function () {
console.log(myname); // undefined
var myname = 'local';
console.log(myname); // local
};
fn()
// 上述代码实际上等同于以下代码
m
- 定时器和获取时间的使用
百合不是茶
时间的转换定时器
定时器:定时创建任务在游戏设计的时候用的比较多
Timer();定时器
TImerTask();Timer的子类 由 Timer 安排为一次执行或重复执行的任务。
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定
- JDK1.5 Queue
bijian1013
javathreadjava多线程Queue
JDK1.5 Queue
LinkedList:
LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方
- http认证原理和https
bijian1013
httphttps
一.基础介绍
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后
- 【Java范型五】范型继承
bit1129
java
定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2
package com.tom.lang.generics;
public abstract class SuperGenerics<T1, T2> {
private T1 t1;
private T2 t2;
public abstract void doIt(T
- 【Nginx六】nginx.conf常用指令(Directive)
bit1129
Directive
1. worker_processes 8;
表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行
nobody 53879 118449 0 Apr22 ? 00:26:15 nginx: worker process
- lua 遍历Header头部
ronin47
lua header 遍历
local headers = ngx.req.get_headers()
ngx.say("headers begin", "<br/>")
ngx.say("Host : ", he
- java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。
bylijinnan
java
import java.util.Arrays;
public class MinSumASumB {
/**
* Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序.
*
* 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
* 例如:
* int[] a = {100,99,98,1,2,3
- redis
开窍的石头
redis
在redis的redis.conf配置文件中找到# requirepass foobared
把它替换成requirepass 12356789 后边的12356789就是你的密码
打开redis客户端输入config get requirepass
返回
redis 127.0.0.1:6379> config get requirepass
1) "require
- [JAVA图像与图形]现有的GPU架构支持JAVA语言吗?
comsci
java语言
无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情
- 安装ubuntu14.04登录后花屏了怎么办
cuiyadll
ubuntu
这个情况,一般属于显卡驱动问题。
可以先尝试安装显卡的官方闭源驱动。
按键盘三个键:CTRL + ALT + F1
进入终端,输入用户名和密码登录终端:
安装amd的显卡驱动
sudo
apt-get
install
fglrx
安装nvidia显卡驱动
sudo
ap
- SSL 与 数字证书 的基本概念和工作原理
darrenzhu
加密ssl证书密钥签名
SSL 与 数字证书 的基本概念和工作原理
http://www.linuxde.net/2012/03/8301.html
SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。
http://www.ibm.com/developerworks/cn/webspher
- Ubuntu设置ip的步骤
dcj3sjt126com
ubuntu
在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。
转载不是错:
Ubuntu命令行修改网络配置方法
/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载.
1. 以D
- php包管理工具推荐
dcj3sjt126com
PHPComposer
http://www.phpcomposer.com/
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
中文文档
入门指南
下载
安装包列表
Composer 中国镜像
- Gson使用四(TypeAdapter)
eksliang
jsongsonGson自定义转换器gsonTypeAdapter
转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述
Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例
例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都
- JQM控件之Navbar和Tabs
gundumw100
htmlxmlcss
在JQM中使用导航栏Navbar是简单的。
只需要将data-role="navbar"赋给div即可:
<div data-role="navbar">
<ul>
<li><a href="#" class="ui-btn-active&qu
- 利用归并排序算法对大文件进行排序
iwindyforest
java归并排序大文件分治法Merge sort
归并排序算法介绍,请参照Wikipeida
zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
基本思想:
大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数
低于限制行数的子文件直接排序
两个排序好的子文件归并到父文件
直到最后所有排序好的父文件归并到输入
- iOS UIWebView URL拦截
啸笑天
UIWebView
本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有
- 索引的碎片整理SQL语句
macroli
sql
SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片
- Angularjs同步操作http请求with $promise
qiaolevip
每天进步一点点学习永无止境AngularJS纵观千象
// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
var deferred = $q.defer();
AccountService.getProfile().then(function(res) {
- hibernate联合查询问题
sxj19881213
sqlHibernateHQL联合查询
最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。
针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2)
1 几个常识:
(1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。
(2)hql的默认查询策略,在进行联合查询时,会产
- struts2.xml
wuai
struts
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache