vuek框架结构设计及左侧菜单右侧内容显示
环境配置
Node 下载地址http://nodejs.cn/
安装文件下有一个绿色的图片交node.exe 点击运行
输入node -v进行检测是否安装成功
使用vue-cli(脚手架)搭建项目
vue-cli是vue官方提供的用域搭建基于vue+webpack_es6项目的脚手架工具
在线文档:https://github.com/vuejs/vue-cli
操作:
1.npm install -g vue-cli:全局下载工具
2.vue init webpack 项目名:下载基于webpack模板项目
3.cd 项目名:进入项目目录
4.npm install :下载项目依赖的所有模块
5.npm run dev :运行项目
6.访问项目:localhost:8080
项目目录结构
src
assets:存放照片、css、js
css
js
img
components:存放组件
lib:存放模拟数据
router:配置路由
store:存放vuex vuex的安装:cd x项目目录
cnpm install vuex --save
views:存放所有单页面
配置访问端口号:
根目录下有一个config文件夹,看名字就知道与配置有关,打开config目录下的index.js
dev: {
env: require('./dev.env'),
port: 8092,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
}
项目目录下:https://blog.csdn.net/weixin_39378691/article/details/83784403
1.安装elementUI:cd进入项目根目录,npm i element-ui -S
2.引入elementUI组件(main.js文件中)
import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(Element, { size: 'small' })
项目目录下:https://blog.csdn.net/weixin_41432849/article/details/81988058
1.安装jquery:cd进入项目根目录,
npm install jquery --save
2.在项目 build 里的webpack.base.conf.js 里加载webpack文件,注意,要放在配置文件第一行;
const webpack = require('webpack')
3.在module.exports的最后加入
,
plugins:[
new webpack.ProvidePlugin({
$:"jquery",
jQuery:"jquery",
jquery:"jquery",
"window.jQuery":"jquery"
})
]
vue环境搭建.txt
环境配置
Node 下载地址http://nodejs.cn/
安装文件下有一个绿色的图片交node.exe 点击运行
输入node -v进行检测是否安装成功
使用vue-cli(脚手架)搭建项目
vue-cli是vue官方提供的用域搭建基于vue+webpack_es6项目的脚手架工具
在线文档:https://github.com/vuejs/vue-cli
操作:
1.npm install -g vue-cli:全局下载工具
2.vue init webpack 项目名:下载基于webpack模板项目
3.cd 项目名:进入项目目录
4.npm install :下载项目依赖的所有模块
5.npm run dev :运行项目
6.访问项目:localhost:8080
vue语法.rar
二、Vue的数据驱动---mvvm模式的介绍
Vue是一款轻量级的渐进式前端框架,主要功能:
1、模板渲染/数据同步
2、组件化、模块化
3、扩展功能:路由 等等
Vue资源:
中文官网:https://cn.vuejs.org/
Github源码:https://github.com/vuejs/vue
MVVM:
M:Model数据模型 负责数据存储
V:View视图 负责页面的显示
VM:View Model负责业务处理,对数据进行加工,之后交给视图
Vue1 下载地址:http://v1-cn.vuejs.org/js/vue.js
Vue2 下载地址:https://unpkg.com/
[email protected]/dist/vue.js
三、Vue常见指令介绍上
1、插值表达式
{{}}
当模型中的数据发生改变时,那么视图中的数据也对应的发生改变。
2、v-text
将一个变量的值渲染到指定的元素中
3、v-html
可以真正输出html元素
4、v-model
实现双向数据绑定
5、v-build
绑定页面中元素的属性
6、v-if和v-show
v-if
作用:判断是否加载固定的内容,如果是真,就加载,如果是假,就不加载;
语法:v-if='判断表达式'
v-show
作用:判断是否显示内容
语法:v-show='判断表达式'
v-if和v-show的相同点和不同点
1.相同点:都可以实现对于一个元素的显示与隐藏操作
2.不同点:v-if是将元素添加或移出dom树模型中,v-show只是在这个属性上添加display:none而已。
3.v-if有更高的切换小号,安全性高。v-show初始化消耗大点。所以,如果需要频繁切换并对安全性没有要求时,
可以用v-show。如果在运行时,条件不可能改变的话,使用v-if更好点。
7、v-for
作用:控制html元素中的循环
语法:v-for="item in 集合"
8、v-on
作用:对页面中的事件进行绑定
语法:v-on:事件类型 = '监听器'
缩写@事件类型='监听器'
四、Vue常用的组件使用
组件是vue.js中一个非常强大的功能,可以扩展HTML元素,封装可重用的代码。
1、将组件内容定义到template模板中
2、组件中实现指令以及事件绑定
五、组件间的传值
1、父组件传值给子组件
2、子组件传值给父组件
六、Vue-router路由的基本使用上
在一个系统或App中,由多个页面组成,通常会使用vue中的组件来实现,那么从一个页面跳转到另一个页面时,
通过url路径来实现的,哪个url对应哪个页面,在vue中是通过vue-router来实现
Vue-router在vue2.0中的使用、
配合vue1.0使用的版本的帮助文档地址:
https://github.com/vuejs/vue-router/tree/1.0/docs/zh-cn
配合vue1.0使用的vue-router下载地址:
https://cdnjs.doubflare.com/ajax/libs/vue-router/0.7.10/vue-router.min.js
配合vue2.0使用的版本的帮助文档地址:http://router.vuejs.org/zh-cn/installation.html
配合vue2.0使用的vue-router下载地址:https://unpkg.com/vue-router/dist/vue-router.js
七、路由的传值
vue2.0的路由参数定义实现url的传值
八、ECMAScript6
九、let使用
let是申明变量的关键字
1、在相同的作用域内,let不能重复申明一个变量
2、let申明的变量不会被预解析
3、暂时性死区(变量在let声明前都不能访问,为了防止先调用后声明这个现象)
十、let与for的使用
1.块级作用域
let声明的变量拥有块级作用域,块级作用域是一对大括号
块级作用域可以直接些一堆大括号,以后就不用写自执行函数了
2.var与for循环
3.let与for循环
十一、const的用法
const声明一个常量,一旦声明后就不能修改了
1.如果声明后再去修改的话就会报错
2.只声明不赋值也会报错
3.只能先声明后使用,不会被提前解析
4.不能重复声明一个常量
注意:const声明的对象中属性是可以修改的
十二、结构赋值-数组
结构赋值
按照一定的模式,从数组或者对象中把数据拿出来,对变量进行赋值
数组结构赋值
等号左边与右边必须都是数组,数组的结构赋值要一一对应。如果对应不上的话就是undefind
十三、对象结构赋值
对象结构赋值
等号左边与右边必须都是对象,名字要一一对应,顺序不需要对应,对应不上的值结果是undefind
十四、字符串模板
1.字符串需要用一堆反引号包裹起来,它可以定义多行字符串,只用一堆反引号
2.要拼进去的数据需要放在${}里面
3.大括号里面还可以进行运算
4.大括号里面可以调用函数
十五、箭头函数
语法:
1.function用var、let、const来表示
2.参数要卸载第一个等号后面
a.如果没有参数,需要写一堆空的小括号
b.只有一个参数,那就直接写,不用加括号
c.参数有多个,需要加一个小括号,参数用逗号隔开
3.函数的主题内容是放箭头后面,
如果语句只有一条,那就直接写;
如果语句有多条,需要把他们放在一堆大括号里 。
十六、rest参数
rest参数 ...变量名
rest参数是一个数组,他的后面不能再有参数,不然会报错
扩展方法...
1.三个点后面是一个类数组,它的作用是把这个类数组转成真正的数组,但是它需要放到一对中括号里面
2.三个点后面是一个真正的数组,它的作用是把数组转成一个普通集合数据,不需要加中括号
十七、Symbol介绍
新增的第7中数据类型,表示独一无二。用来作为属性名,能保证不会与其他的属性名冲突
1.它是通过Symbol函数生成的
2.它的前面不能用new,因为它生成的是一个原始类型的数据,不是对象
3.它可以接受一个参数,为了便于区别。及时长的一样他们也不同
4.它不能与其他的值进行运算,没有隐式转换
5.它的值可以被转换成布尔值或字符串,不能转换成数字
十八、set数据结构
set数据结构,类似数组,所有的数据都是唯一的,没有重复的值。它本身是一个构造函数
size数据长度
add()添加一个数据
delete()删除一个数据
has()查找某条数据,返回一个布尔值
clear()删除所有数据
十九、map数据结构
map数据结构,类似于对象。键值对的集合,所有输一局都是唯一的,不会重复。每条数据都需要放在一个数组中
它本身就是一个构造函数
size()数据的长度
set()添加一条数据
delete()删除一条数据
get()获取一条数据
has()查找某条数据,返回一个布尔值
clear()删除所有数据
二十:教学视频
Installanywhere打包javaweb项目
Installanywhere打包javaweb项目
一 准备阶段
由于我们打包的是javaweb项目,实现的目标是在一台没有javaweb项目运行环境下,可以通过一键安装后执行我们的项目客户机上,那么,我们需要准备如下文件
1、jdk -- 可以直接将你本机下安装好的jdk中拷贝,如
2、Tomcat -- 由于客户可能是不懂软件的,那么我们就需要下载一个免安装解压版的Tomcat,直接去官网下载
3、Mysql -- 同理,下载免安装版的mysql数据库
二 预处理阶段
1、对Tomcat进行部分优化,具体根据情况而定,我这里做了适当优化
2、将要运行的项目打成war包 放入Tomcat下的webapps下,尽量保证你的项目开发中依赖的Tomcat和该Tomcat版本一直吧
3、往mysql目录下添加文件夹和文件,如:
data : 存放数据库数据的,在后面的脚本中可能要用到,这里提前创建,避免脚本出
错
sql : 这里用于存放你从本地库中导出的数据库脚本.sql文件,具体也不一定会用到
,主要看后面的脚本如何编写
my.ini: 这是windows下的配置文件,配置了mysql的信息,解压版中是没有该文件的
手动创建一个,内容可以为空,也可以不为空,放入些基本的配置,我这里是直接为空的
为了后面installanywhere动态插入配置方便
4、将jdk, tomcat, mysql全部放入一个文件夹下如:
Install.bat : 该文件用于注册和启动Tomcat,mysql的服务
set Path=%SystemRoot%\system32
set JAVA_HOME=%1%\jdk
set CATALINA_HOME=%1%\tomcat
set mysql_home=%1%\mysql
net stop mysql5
call %1%\mysql\bin\mysqld --remove mysql5
call %1%\mysql\bin\mysqld --install mysql5
sc config mysql5 start= auto
net start mysql5
call %mysql_home%\bin\mysqladmin -h localhost -u root password 123
call %mysql_home%\bin\mysql -hlocalhost -uroot -p123 <%mysql_home%\sql\one.sql
net stop mytomcat
call %1%\tomcat\bin\service remove mytomcat
call %1%\tomcat\bin\service install mytomcat
sc config mytomcat start= auto
net start mytomcat
uninstall.bat : 该文件用于停止并注销删除服务
set Path=%SystemRoot%\system32
set JAVA_HOME=%1%\jdk
set CATALINA_HOME=%1%\tomcat
net stop mytomcat
net stop mysql5
call %1%\tomcat\bin\service remove mytomcat
call %1%\mysql\bin\mysqld --remove mysql5
start.bat : 用于手动启动服务
set Path=%SystemRoot%\system32
net start mytomcat
stop.bat : 用于手动关闭服务
set Path=%SystemRoot%\system32
net stop mytomcat
one : 这个是用于制作应用程序打开的快捷方式 是一个.url文件 -- one.url
1.ico : 图片文件,用于快捷方式和或安装文件的图标
三 installanywhere 制作
注:产品名称就是那个会在windows开始菜单栏显示的文件夹名字
添加四个环境变量:就是会添加到windows下的高级属性设置的那个环境变量那里
JAVA_HOME
$USER_INSTALL_DIR$\jdk
CATALINA_HOME
$USER_INSTALL_DIR$\tomcat
CATALINA_DIR
$USER_INSTALL_DIR$\tomcat\bin
PATH
$USER_INSTALL_DIR$\jdk\bin;$USER_INSTALL_DIR$\mysql\bin;$USER_INSTALL_DIR$\tomcat\bin
接下来制作快捷方式和开始菜单栏中的选项
其中的程序快捷方式制作
[InternetShortcut]
URL="http://localhost:8082/test"
IconFile=$USER_INSTALL_DIR$$\1.ico
HotKey=0
IconIndex=0
IDList=
开始菜单栏中的卸载菜单制作
动态修改配置文件
这里我们先将mysql的my.ini文件进行修改,因为这个文件中有两个属性的值是用户在选择安装目录的时候传进来的,所以要修改,但是,我的文件内容是空的,就直接插入配置文本
我的文本模板是:
[client]
port=3306
default-character-set=utf8
[mysqld]
port=3306
character_set_server=utf8
#安装路径
basedir="$USER_INSTALL_DIR$\\mysql"
#数据路径
datadir="$USER_INSTALL_DIR$\\mysql\\data"
# 允许最大连接数
max_connections=200
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
$USER_INSTALL_DIR$\bin\mysqld.exe
后面再来执行安装注册时的批处理命令
-- 其中Command Line:
cmd /c $USER_INSTALL_DIR$\install.bat $USER_INSTALL_DIR$
cmd /c表示执行指定的命令并中断。
$USER_INSTALL_DIR$是传递给install.bat中%1%的参数。
并且,选中Options中的3个选项。
将该Execute Command移动到Panel: Install Complete前面。
配置安装安程序后自动打开页面
反安装:配置卸载批处理
-- 菜单Pre-Uninstall>,按钮Add Action>Execute Command>Add>。
Command Line:
cmd /c $USER_INSTALL_DIR$\uninstall.bat $USER_INSTALL_DIR$
将该Execute Command移动到第一个。
选中Options中的3个选项。
放在倒数第二的原因是:表示要等到选择完需要卸载的项后再执行,避免用户点击取消,把服务给注销了
nisi脚本配置jdk tomcat mysql redis
一.环境变量配置
; 定义系统环境变量的 注册表key值
!define WriteEnvStr_RegKey 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
;设置环境变量
Function "regExpandStr"
SetOverwrite ifnewer
;设置jdk环境变量
WriteRegExpandStr ${WriteEnvStr_RegKey} "JAVA_HOME" "$INSTDIR\jdk1.8.0_131"
;设置CATALINA_DIR
WriteRegExpandStr ${WriteEnvStr_RegKey} "CATALINA_DIR" "$INSTDIR\tomcat\bin"
;设置CATA_LINA
WriteRegExpandStr ${WriteEnvStr_RegKey} "CATA_LINA" "$INSTDIR\tomcat"
;设置path
ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;C:\windows\system32;$INSTDIR\redis;$INSTDIR\mysql\bin;$INSTDIR\Java\jdk1.8.0_131\bin;"
#第一次是使环境变量修改对其他进程有效;刷新环境变量
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
SetOverwrite on
functionend
;注册服务
Function "installService"
detailprint "------------------------------------install tomcat Service..."
Sleep 2000
SetOutPath "$INSTDIR\tomcat\bin"
nsExec::Exec 'cmd /c service install'
nsExec::Exec 'cmd /c sc config tomcat8 start= auto' ;设置服务自动开启
detailprint "------------------------------------install tomcat Service success..."
detailprint "install mysql Service..."
Sleep 2000
SetOutPath "$INSTDIR\mysql\bin"
nsExec::Exec 'cmd /c $INSTDIR\mysql\bin\mysqld.exe" -install Mysql --defaults-file="$INSTDIR\\mysql\\my.ini'
detailprint "install mysql Service success..."
detailprint "------------------------------------install redis Service..."
Sleep 2000
SetOutPath "$INSTDIR\redis"
nsExec::Exec 'cmd /c redis-server --service-install redis.windows.conf'
detailprint "install redis Service success..."
functionend
; 启动服务
Function "startService"
detailprint "------------------------------------start tomcat..."
nsExec::Exec 'cmd /c sc start Tomcat8'
detailprint "------------------------------------start tomcat success..."
detailprint "------------------------------------start mysql..."
nsExec::Exec 'cmd /c sc start mysql'
detailprint "------------------------------------start MySQL success..."
detailprint "------------------------------------start redis..."
;nsExec::Exec 'cmd /c sc redis-server --service-start --service-name redis'
detailprint "------------------------------------start redis success..."
functionend
;停止服务
Function "un.stopService"
detailprint "正在停止tomcat服务......."
nsExec::Exec 'cmd /c sc stop tomcat8'
detailprint "停止tomcat服务成功......."
detailprint "正在停止mysql服务......."
nsExec::Exec 'cmd /c sc stop mysql'
detailprint "停止mysql服务成功......."
detailprint "正在停止redis服务......."
nsExec::Exec 'cmd /c sc redis-server --service-stop --service-name redis'
detailprint "停止redis服务成功......."
functionend
;删除服务
Function "un.uninstService"
detailprint "正在卸载tomcat服务......."
nsExec::Exec 'cmd /c sc delete tomcat8'
detailprint "卸载tomcat服务成功......."
detailprint "正在卸载mysql服务......."
nsExec::Exec 'cmd /c sc delete mysql'
detailprint "卸载mysql服务成功......."
detailprint "正在卸载redis服务......."
nsExec::Exec 'cmd /c sc delete redis'
detailprint "卸载redis服务成功......."
functionend
;清空环境变量
Function "un.emptyRegExpandStr"
#删除 系统环境变量JAVA_HOME 和 CATALINA_HOME
#卸载的时候必须设置JAVA_HOME 和 CATALINA_HOME两个环境系统变量为空,或者删除这两个系统变量。否则会出现NSIS选择系统变量的错误(NSIS会自动选择之前有值的系统变量,而不是选择当前刚设置的系统变量)
detailprint "正在删除相关环境变量......."
functionend
二.校验mac地址
#序列号 校验页面
Page custom check_serial_number
Var "MacAddress"
Function check_serial_number
Call .GetMacAddress
#MessageBox MB_OK '当前机器Mac地址为:$MacAddress'
${if} $MacAddress == '00-50-56-C0-00-08' ${OrIf} $MacAddress == '00-50-56-C0-00-081'
#MessageBox MB_OK '已授权'
${Else}
MessageBox MB_OK '未授权,请联系经销商并授权!'
;SendMessage $HWNDPARENT 0x408 3 0 #页面跳转
Call onClickClose
${EndIf}
FunctionEnd
#获取主机MAC地址
Function .GetMacAddress
System::Call Iphlpapi::GetAdaptersInfo(i,*i.r0)
System::Alloc $0
Pop $1
System::Call Iphlpapi::GetAdaptersInfo(ir1r2,*ir0)i.r0
StrCmp $0 0 0 finish
loop:
StrCmp $2 0 finish
System::Call '*$2(i.r2,i,&t260;.s,&t132;.s,i.r5)i.r0' ;Unicode版将t改为m
IntOp $3 403 + $5
StrCpy $6 ""
${For} $4 404 $3
IntOp $7 $0 + $4
System::Call '*$7(&i1;.r7)'
IntFmt $7 "X" $7
StrCpy $6 "$6$7"
StrCmp $4 $3 +2
StrCpy $6 "$6-"
${Next}
StrCpy $MacAddress $6
Goto loop
finish:
System::Free $1
FunctionEnd
三.关闭按钮功能
;点击右上角关闭按钮
Function onClickClose
FindProcDLL::FindProc "${PRODUCT_NAME}.exe"
Sleep 500
Pop $R0
${If} $R0 != 0
KillProcDLL::KillProc "${PRODUCT_NAME}.exe"
${EndIf}
FunctionEnd
flex文件传输功能
这是一个用Flex4编写的例子,以前都是研究Flex3,现在要向Flex4进军,所以,就用4做了这个例子!
JSF文件上传
依赖的文件:
tomahawk-1.1.3.jar
commons-fileupload-1.2.jar
commons-io-1.3.1.jar
Tomahawk.tld
把这个三个包放在/WEB_INF/lib目录下面。Jsf依赖的包也放在这个目录下面
Tomahawk.tld放在/WEB-INF目录下。Jsf标签也放在这个目录下面。
这个主要讲jsf上传文件,因此只罗列了上传文件用到的包和标签。
Web-xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<!-- Context Listener creates and sets the application handler -->
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<filter>
<filter-name>ExtensionsFilter</filter-name>
<filter-class>
org.apache.myfaces.component.html.util.ExtensionsFilter
</filter-class>
<init-param>
<param-name>uploadMaxFileSize</param-name>
<param-value>10m</param-value>
</init-param>
<init-param>
<param-name>uploadThresholdSize</param-name>
<param-value>100k</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExtensionsFilter</filter-name>
<!—要和<servlet-mapping>中的<servlet-name>一致-->
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
上传文件的页面如下:
<%@ include file="tags.jsp"%>
<f:view>
<h:form id="MyForm" enctype="multipart/form-data" >
<h:messages globalOnly="true" styleClass="message"/>
<h:panelGrid columns="3" border="0" cellspacing="5">
<h:outputLabel for="myFileId" value="File: "/>
<x:inputFileUpload id="myFileId" value="#{myBean.myFile}" storage="file" required="true"/>
<h:message for="myFileId"/>
<h:outputLabel for="myParamId" value="Param: "/>
<h:selectOneMenu id="myParamId"
value="#{myBean.myParam}"
required="true">
<f:selectItem itemLabel="" itemValue=""/>
<f:selectItem itemLabel="MD5" itemValue="MD5"/>
<f:selectItem itemLabel="SHA-1" itemValue="SHA-1"/>
<f:selectItem itemLabel="SHA-256" itemValue="SHA-256"/>
<f:selectItem itemLabel="SHA-384" itemValue="SHA-384"/>
<f:selectItem itemLabel="SHA-512" itemValue="SHA-512"/>
</h:selectOneMenu>
<h:message for="myParamId"/>
<h:outputText value=" "/>
<h:commandButton value="Submit"
action="#{myBean.processMyFile}"/>
<h:outputText value=" "/>
</h:panelGrid>
</h:form>
</f:view>
其中tags.jsp文件如下:
<%@ page language="java" pageEncoding="GB18030"%>
<%@ page contentType="text/html" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="x"%>
Faces-config.xml文件如下:
<faces-config>
<managed-bean>
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>
fileupload.MyBean
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
MyBean如下:
package com.dhc;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.apache.myfaces.custom.fileupload.UploadedFile;
public class oaMailMainForm {
private UploadedFile myFile;
public UploadedFile getMyFile() {
return myFile;
}
public void setMyFile(UploadedFile myFile) {
this.myFile = myFile;
}
public String uploadedfile() {
System.out.println("Entry");
try {
InputStream in = new BufferedInputStream(myFile.getInputStream());
try {
byte[] buffer = new byte[64 * 1024];
FileOutputStream fileOutputStream = new FileOutputStream(
"C:\\My Files\\tst.jpg");// 这里可以把上传的文件写服务器目录,或者数据库中
while (in.read(buffer) > 0) {
fileOutputStream.write(buffer);
}
} finally {
in.close();
}
System.out.println("End");
return "success";
} catch (Exception x) {
System.out.print("Exception");
FacesMessage message = new FacesMessage(
FacesMessage.SEVERITY_FATAL, x.getClass().getName(), x
.getMessage());
FacesContext.getCurrentInstance().addMessage(null, message);
return null;
}
}
}
参考文献:http://www.blogjava.net/cooky/archive/2007/10/02/150176.html
http://blog.csdn.net/meteorlWJ/archive/2008/01/09/2032505.aspx
http://tml808.javaeye.com/blog/166853
JSF文件下载实现
JSF实现文件的下载功能
public static void downloadFile(String path,String fileName) {
try {
// 获得JSF上下文环境
FacesContext context = FacesContext.getCurrentInstance();
// 获得ServletContext对象
ServletContext servletContext = (ServletContext) context
.getExternalContext().getContext();
// 取得文件的绝对路径
String realName = servletContext.getRealPath(path) + "/"
+ fileName;
HttpServletResponse httpServletResponse =
(HttpServletResponse) FacesContext
.getCurrentInstance().getExternalContext().getResponse();
downloadFile(httpServletResponse,realName,fileName);
} catch (IOException e) {
e.printStackTrace();
}
FacesContext.getCurrentInstance().responseComplete();
}
public static void downloadFile(HttpServletResponse response,String realName,String fileName)
throws IOException
{
response.setHeader("Content-disposition",
"attachment; filename=" + fileName);
response.setContentType("application/x-download");
//File exportFile = new File(realName);
//response.setContentLength((int) exportFile.length());
ServletOutputStream servletOutputStream = response.getOutputStream();
byte[] b = new byte[1024];
int i = 0;
FileInputStream fis = new java.io.FileInputStream(realName);
while ((i = fis.read(b)) > 0) {
servletOutputStream.write(b, 0, i);
}
}
使用方法
1、在backing bean的方法中调用函数1即可。如Abean中download方法调用了该方法,前台可以这样调用:
或者
2、jsp页面可以这样调用:
<%
String filename = "";
if (request.getParameter("filename") != null) {
filename = request.getParameter("filename");
}
try {
framewo