当前位置:文档之家› 通过代码示例跟我学J2EE JSP中的内置对象的应用实例(第1部分)

通过代码示例跟我学J2EE JSP中的内置对象的应用实例(第1部分)

通过代码示例跟我学J2EE JSP中的内置对象的应用实例(第1部分)
通过代码示例跟我学J2EE JSP中的内置对象的应用实例(第1部分)

目录

1.1通过代码示例跟我学J2EE JSP中的内置对象的应用实例(第1部分) (2)

1.1.1体验JSP中的out内置对象的应用 (2)

1.1.2体验JSP中的request内置对象的应用 (3)

1.1.3体验JSP中的response内置对象的应用 (8)

1.1.4Cookie在项目中的应用实例 (9)

1.1.5如何实现在Cookie中保存中文信息 (19)

1.1通过代码示例跟我学J2EE JSP中的内置对象的应用实例(第1部分)1.1.1体验JSP中的out内置对象的应用

1、体验out对象的中文乱码http://127.0.0.1:8080/webcrm/userManage/updateUserInfo.jsp

加 <%@ page pageEncoding="GB18030" %>命令,就可以了!

2、out对象的out.print()和out.println()没有区别

在JSP页面中,用out.println()这种方式输出结果本质上会换行,但是在程序片中输出的。但JSP页面中的各种脚本被编译为Servlet程序时,转换为纯文本格式输出,所以输出的内容最后并没换行——页就是out.println()并不能实现真正的换行,必须加
标签或者再调用newLine()方法。

3、out对象的 print() 与 write() 方法之间的不同

由于out对象是JspWriter类型的,而JspWriter继承了java.io.Writer类。write方法是在父类Writer中定义的,但print方法是在子类JspWriter中扩展定义出的,重载的print方法可以实现将各种类型的数据转换成字符串的形式输出。

而重载的write方法只能输出字符/字符数组/字符串等与字符相关的数据,如果使用这两种方法输出值为null的字符串对象,那么print方法输出的结果是“null”,而write 方法则会抛出NullPoiterException异常。

1.1.2体验JSP中的request内置对象的应用

1、request对象的应用

(1)设计userLogin.jsp页面中的登陆表单

<%@ page pageEncoding="GB18030" %>

<%@ page import="java.util.Date" %>

<%@ page language="java" %>

蓝梦集团CRM系统中的登录页面

输入右面的认证码:
用户类型:

您的名称:
您的密码:

onclick="this.value='正在提交请求,请稍候'"/>

(2)设计响应该登陆请求的JSP页面responseUserLogin.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

响应页面

<%!

String verifyCodeDigit,type_User_Admin,userName,userPassWord;

%>

<%

verifyCodeDigit=request.getParameter("verifyCodeDigit");

type_User_Admin=request.getParameter("type_User_Admin");

userName=request.getParameter("userName");

userPassWord=request.getParameter("userPassWord");

boolean loginSuccess=userName.equals("yang")&&userPassWord.equals("1234");

if(loginSuccess){

out.print("

登陆成功!你的用户为:"+userName+"
");

}

else{

out.print("

登陆失败!你的用户为:"+userName+"
");

}

%>

注意:getParameter得到的都是String类型的,并且获取POST/GET传递的参数值。(3)测试该功能http://127.0.0.1:8080/webcrm/userManage/userLogin.jsp

或者出现下面的错误

(4)解决表单提交时中文乱码

一个HTTP协议的请求或应答的头部(在http协议中,数据包分为两部分,一部分是头部,由一些名值对构成,一部分是主体(body),是真正传办理的数据(如HTML页面等)),必须以US-ASCII编码,这是因为头部不传数据而只描述被要传输的数据的一些信息,一个例外是cookie,它是数据但是通过头部进行传输的,所以它也要用US-ASCII编码。

HTTP数据包的主体部分,可以用任何一种方式进行编码,默认是ISO-8859-1,具体可以用头部字段Content-Type指定。可以利用addRequestHeader方法,设定编码方式;用getResponseCharSet取得编码方式。

(5)解决方法的主要代码示例

<%

request.setCharacterEncoding("gb2312");

String verifyCodeDigit=request.getParameter("verifyCodeDigit");

String type_User_Admin=request.getParameter("type_User_Admin");

String userName=request.getParameter("userName");

String userPassWord=request.getParameter("userPassWord");

if(userName.equals("yang")&&userPassWord.equals("1234")){

out.print("

登陆成功!你的用户为:"+userName+"
");

}

else{

out.print("

登陆失败!你的用户为:"+userName+"
");

}

%>

2、request对象也可以作为一个数据缓存器使用来存储数据

request对象中的setAttribute是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面转发定向到另一个页面时,应用服务器会把这块内存拷贝另一个页面所对应的内存中。这样getAttribute就能取得前面所设下的值——实现在同一个请求中多个不同的页面之间传递数据。

3、在get请求方式下的URL地址字符串带有中文参数

在应用中经常可能需要在get请求方式下的url地址字符串中也需要传中文参数,如http://www.xxxx.xxx/?nickname=网上张飞,此时必须要进行转换,否则将无法正确地发送。(1)在发送中文的请求参数之前,需要对url地址字符串中的中文请求参数进行url编码转换

String nickName = "网上张飞";

String encodingNickName = null;

try {

encodingNickName =https://www.doczj.com/doc/2b16730707.html,.URLEncoder.encode(nickName , "utf-8");

} catch (UnsupportedEncodingException e) {

}

然后再进行发送get请求,如http://www.xxxx.xxx/?nickName=encodingNickName。(2)在get请求的服务器接收端的相关程序中进行发转换

String returnNickName =null;

try {

returnNickName =https://www.doczj.com/doc/2b16730707.html,.URLDecoder.decode(request.getParameter("nickName"), "UTF-8");

returnNickName = new String(returnNickName .getBytes("ISO-8859-1"), "UTF-8");

} catch (UnsupportedEncodingException e) {

}

由于在发送请求时采用了encode方法进行编码转换,因此首先必须要采用decode方法反转换以正确地获得请求的参数,但此时所获得的请求参数的编码为Web服务器默认的编码方式(Tomcat下为ISO-8859-1)。因此,还必须再对ISO-8859-1的编码格式进行转换为最终的目标编码UTF-8,才能正确地获得所请求的中文参数值。

1.1.3体验JSP中的response内置对象的应用

1、HttpServletResponse常用的方法介绍

HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。所有Servlet响应都实现ServletResponse 接口。ServletResponse接口主要有以下方法:

(1)从Servlet中可以通过getWriter方法取得PrintWriter对象,来输出字符数据。

从Servlet中可以通过getOutputStream方法取得ServletoutputStream对象。ServletOutputStream既可以输出字符数据,也可以输出MIME格式的二进制数据。如果getWriter方法已经被使用过,当使用getOutputStream时,会有https://www.doczj.com/doc/2b16730707.html,ng.IllegalStateException

例外抛出。

(2)setContentType方法:在响应中可以表明内容格式和长短。

(3)setBufferSize方法:设置Web容器的缓冲器大小; getBufferSize方法返回Web容器的缓冲器大小; resetBuffer方法清空并重置缓冲器,使用reset方法清空缓冲器、状态头信息,使用flushBuffer方法将缓冲器内的所有输出内容向客户传递。使用isCommitted方法判断是否响应已经被履行。“履行”的定义是指状态码冬耕信息已经被写入响应。

(4)setLocal方法设定响应的地域信息,主要在Web程序的国际货币国际化时使用。这个方法应该在getWriter之前被使用。默认的Web服务器的地域信息。

(5)setStatus方法用来设置Servlet向客户端返回的状态码,它用来设置没有出错的状态。如果Servlet运行出错,Servlet可以使用sendError方法设置状态码,如sendError(int sc)方法设置错误状态代码。sendError(int sc,String msg)方法除了设置状态码,还向客户发出一条错误信息。

(6)setHeader可以指定特定名称的头信息的值,addDateheader,addIntHeader,setDateHeader,setIntHeader可以加入或理性特定时间或整数型头信息。

(7)addCookie方法可以在Web服务器响应中加入Cookie对象,这个对象将被浏览器所保存。Cookie机制也被用来维护会话状态。

(8)sendRedirect方法向客户发出临时重新导向的响应。它生成的响应状态码为302。该响应给了客户一个新的URL风趣。如果缓冲器已经被清空,这个方法会弹出一个IllegalStateException例外。

1.1.4Cookie在项目中的应用实例

1、什么是Cookie

Cookie,或称Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密。)它的发明者Lou Montulli,是网景公司的前雇员。

Cookies现在经常被大家提到,那么到底什么是Cookies,它有什么作用呢?Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。

当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。从本质上讲,它可以看作是你的身份证。但Cookies不能作为代码执行,也不会传送病毒,且为你所专有,并只能由提供它的服务器来读取。

2、在Cookie中保存的信息片断以"名/值"对(name-value pairs)的形式储存

一个"名/值"对仅仅是一条命名的数据。一个网站只能取得它放在你的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到你的电脑上的其它任何东西。Cookies 中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。

由于Cookies是我们浏览的网站传输到用户计算机硬盘中的文本文件或内存中的数据,因此它在硬盘中存放的位置与使用的操作系统和浏览器密切相关。在Windows 9X系统计算机中,Cookies文件的存放位置为C:/Windows/Cookies,在Windows NT/2000/XP的计算机中,Cookies文件的存放位置为C:/Documents and Settings/用户名/Cookies。

硬盘中的Cookies文件可以被Web浏览器读取,它的命令格式为:用户名@网站地址[数字].txt。如笔者计算机中的一个Cookies文件名为ch@163[1].txt.要注意的是:硬盘中的Cookies 属于文本文件,不是程序。

3、在Cookie中不能存储特殊的字符

在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),

逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。

4、javax.servlet.http.Cookie类中的setPath() 方法

(1)在正常情况下的Cookie只能在一个Web应用中被共享

即一个Cookie只能由创建它的Web应用获得。但可以在同一个应用服务器内的各个Web 应用之间进行共享,只需要设置cookie.setPath("/");

如果在本机的tomcat/webapp目录下面有两个不同的Web应用:webapp_a和webapp_b。

原来在webapp_a下面设置的Cookie,在webapp_b下面获取不到,因为path默认是产生Cookie的应用的路径(也就是webapp_a)。

若在webapp_a下面设置webapp_a的时候,增加一条cookie.setPath("/");或者cookie.setPath("/webapp_b/"); 就可以在webapp_b的应用中获取到webapp_a下设置的Cookie 了。

(2)setPath的参数是相对于应用服务器存放应用的文件夹的根目录而言的(比如Tomcat下面的webapp)

因此cookie.setPath("/");之后,可以在webapp文件夹下的所有应用共享Cookie,而cookie.setPath("/webapp_b/"); 是指webapp_a应用设置的Cookie只能在webapp_b应用下的获得,即便是产生这个Cookie的webapp_a应用也不可以。

(3)设置cookie.setPath("/webapp_b/jsp")或者cookie.setPath("/webapp_b/jsp/")的时候只有在webapp_b/jsp下面可以获得Cookie,在webapp_b下面但是在jsp文件夹外的都不能获得Cookie。

(4)设置cookie.setPath("/webapp_b");,是指在webapp_b下面才可以使用Cookie,这样就不可以在产生Cookie的应用webapp_a下面获取Cookie了。

(5)有多条cookie.setPath("XXX");语句的时候,起作用的以最后一条为准。

(6)应用Cookie类中的setSecure(boolean flag)方法以指导浏览器使用安全协议(如HTTPS 或SSL)发送cookie。

5、Cookie的编程示例

<%!

String lastAccessDate=null;

String nowAccessDate=null;

Cookie oneCookie=null;

Cookie[] cookies=null;

java.util.Date nowDate=null;

%>

<%

cookies=request.getCookies();

nowDate=new java.util.Date();

if(cookies==null){ //没有Cookie,用户是第一次

lastAccessDate=(nowDate.getYear()+1900)+"年"+(nowDate.getMonth()+1)+"月"+nowDate.getDate()+"日"+

nowDate.getHours()+"时"+nowDate.getMinutes()+"分"+nowDate.getSeconds()+"秒" ;

oneCookie=new Cookie("lastAccessDate",lastAccessDate);

oneCookie.setMaxAge(30*24*60*60); //是以秒为时间单位

oneCookie.setPath(request.getContextPath()+"/");

oneCookie.setSecure (true);

/*

在Cookie中如果存储敏感数据时,确保使用Cookie.setSecure(布尔标志)在HTTP 响应中设置Cookie的安全标志,以指导浏览器使用安全协议(如HTTPS 或SSL)发送Cookie。

*/

response.addCookie(oneCookie);

}

else{

for(int index=0; index

Cookie someOneCookie =cookies[index];

if(someOneCookie.getName().equals("lastAccessDate")){

lastAccessDate= someOneCookie.getValue();

nowDate=new java.util.Date();

nowAccessDate=(nowDate.getYear()+1900)+"年"+(nowDate.getMonth()+1)+"月"+nowDate.getDate()+"日"+

nowDate.getHours()+"时"+nowDate.getMinutes()+"分"+nowDate.getSeconds()+"秒" ;

oneCookie=new Cookie("lastAccessDate",nowAccessDate);

oneCookie.setMaxAge(30*24*60*60); //是以秒为时间单位

oneCookie.setPath(request.getContextPath()+"/");

response.addCookie(oneCookie);

break;

}

}

}

out.print("您上次访问本系统是在:"+lastAccessDate);

%>

(3)测试http://127.0.0.1:8080/webcrm/index.jsp

(4)在浏览器中控制Cookie的读写

5、执行本示例系统以测试相关的应用效果

6、关闭浏览器、并再次打开浏览器访问系统,将出现下面的结果

但要注意有些浏览器不允许在Cookie中保存中文,可以改变为英文或者应用https://www.doczj.com/doc/2b16730707.html,.URLEncoder类中的encode编码,然后再应用https://www.doczj.com/doc/2b16730707.html,.URLDecoder.decode方法进行转

码。

7、如何查看本机器中的Cookie

8、在IE11中则可以通过如下的方式查看(1)按F12 键打开“开发人员工具”

(2)在“开发人员工具”栏中选择其中的“网络”子菜单内的“启用网络流量捕获”

(3)在浏览器中正常输入访问的页面网址进行数据访问操作

(4)在“开发人员工具”内的“网络”项目内找到“详细信息”类型中的“Cookie”子类型,将可以看到该网址所写入的Cookie数据

9、在Chrome浏览器下则只需要在URL地址栏的左端右键单击

点击其中的“显示Cookie和网站数据”项目

10、在FireFox浏览器中查看Cookie数据

“工具”菜单内的“选项”子菜单项目

找到“隐私”类型下的“移除单个Cookie”超链接,点击该超链接,可以输入网址以快速搜索匹配

1.1.5如何实现在Cookie中保存中文信息

1、escape和unescape相关功能介绍

写入Cookie内容前需要进行escape(十六进制编码),编码时又是以字节为单位的,这就是问题的关键所在:任何一个汉字都会被拆成两个字节分别编码;而在读Cookie时,unescape又以字节单位解码,因此最后每个汉字都变成了两个字节的乱码。

因此在保存数据之前先把数据进行转码:https://www.doczj.com/doc/2b16730707.html,.URLEncoder.encode(param);取值时用语句https://www.doczj.com/doc/2b16730707.html,.URLDecoder.decode(param);再转回中文。

2、在Cookie中保存中文信息的相关示例代码

Cookie userNameKeyCookie=

new Cookie("userNameKey", https://www.doczj.com/doc/2b16730707.html,.URLEncoder.encode(userName,"gb2312"));

userNameKeyCookie.setPath(request.getContextPath());

userNameKeyCookie.setPath(request.getContextPath()+"/");

userNameKeyCookie.setMaxAge(7*24*60*60);

response.addCookie(userNameKeyCookie);

3、从Cookie中读出所保存的中文信息的相关示例代码

Cookie someOneCookie=allCookies[loopIndex];

if(someOneCookie.getName().equals("userNameKey")){

userName = https://www.doczj.com/doc/2b16730707.html,.URLDecoder.decode(someOneCookie.getValue(),"gb2312");

}

4、如何删除Cookie

(1)删除某个特定的Cookie

Cookie userNameKeyCookie= new Cookie("userNameKey", null);

userNameKeyCookie.setPath(request.getContextPath()+"/");

userNameKeyCookie.setMaxAge(0);

response.addCookie(userNameKeyCookie);

通过重新建立同名的Cookie对象,并将生命期设置为0,达到立即删除的效果。

(2)删除所有的Cookie项目

Cookie[] cookies=request.getCookies();

for(Cookie cookie: cookies){

cookie.setMaxAge(0);

cookie.setPath(request.getContextPath());

cookie.setPath(request.getContextPath()+"/");

response.addCookie(cookie);

}

JSP上传图片到数据库的例子

现在想写个程序 向数据库中插入图片路径(或则插入图片也可以) 最好是插入图片的路径这样可插入任意大的图片... 请高手指点一下思路.. 感激不尽 1.通过显示层向数据库中插入图片 2.在界面显示的时候是小图片(缩小过的) 3.当点击查看大图片会显示图片(原来的大小) 提供给你图片上传和显示的代码吧!希望对你有帮助 我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的 只要大家将连接数据库的参数改一下就可以了。 SQL> create table image(id int,content varchar(200),image blob); 如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。 testimage.html文件内容如下: Image File



我们在Form的action里定义了一个动作testimage.jsp,它的内容如下: <%@ page contentType= "text/html;charset=gb2312 "%> <%@ page import= "java.sql.* " %> <%@ page import= "java.util.* "%> <%@ page import= "java.text.* "%> <%@ page import= "java.io.* "%>

用JSP实现个人网页中数据库图片的存储与显文献综述

新疆农业大学 专业文献综述 题目: 用JSP实现个人网页中数据库图片的存储与显 示 姓名: 刘王兵 学院: 计算机与信息工程学院 专业: 信息管理与信息系统 班级: 042 学号: 044631257 指导教师: 李萍职称:讲师 2007年12月10日 新疆农业大学教务处制

用JSP实现个人网页中数据库图片的存储与显示 作者:刘王兵指导教师:李萍 摘要:数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。但是,如果我们想动态的显示图片,上述方法就不能满足需要了。我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。 关键词:jsp;Web;个人网页;图片存储;图片显示; The Literature Summary of Making the Human Resources Homepage of the Class Student Liuwangbing Guide the teacher Liping Abstract:Along with the network technology development and the quantity of the network user increase, more and more people take own first choice way to seek employment on-line, meantime the enterprise also relies on the network to gather the talented person. This article through to analysis the human resources homepage, as well as introduction and analysis the current several kind of popular WEB development technology, to used https://www.doczj.com/doc/2b16730707.html, to description the function, which the human resources homepage have as well as realized. Key words:https://www.doczj.com/doc/2b16730707.html,;Web;Human Resources;Homepage Manufacture 前言:随着计算机互联网技术的飞速发展,WEB技术由原来的静态文档(纯HTML页面)发展到目前的多种web编程语言争夺互联网市场。页面内容由原来单一的文字发展到现在多媒体技术在网站开发中得到了充份利用。多媒体技术在网站开发中的应用是通过把文字、图片、视频、音频等元素巧妙的组合成为一个模块嵌入到网页当中。给浏览者以视觉、听觉的冲击,使以留下更加深刻的印像。而图片在网页当的作用想必仅次于文字,以成为页面当中不可缺少的一部分。大量的图片在网页当中被使用,开发人员从而不得不考虑其在服务器当中的存储及在页面当中更好的显示的问题。 正文: 1 网页当中图片存储与显示技术分析 1.1 图片的存储与在网页中的显示概况 JSP是目前使用十分广泛的网站开发技术,而图像是网站中不可缺少的一部分。在JSP 动态网站设计中,图像数据的处理一般有两种方式:一是对于相对较小的图像,可以用二进制流的方式直接保存到数据库表中,在需要时读出。对于大图像,这种方式读写数据占用的时间较长。但是对于相对较大的图像文件,把图像文件保存到一个文件夹中,文件名保存到数据表中,在需要时进行显示。本文通过个人网页方式讨论了在使用JSP开发动态网站过程中图像在数据库中的存储与显示的解决方案。 1.2 网页中图片的存储方式分类

“jsp内置对象”单元习题

“JSP内置对象”单元习题 一、填空题 1.JSP 中有9 种内置对象,它们分别是:___________、___________、response 对象、 pageContext 对象、 session对、 applicationt 对象、page 对象、 config 对象和 exception 对象。 2.Request对象可以使用___________方法获取表单提交的信息。 3.客户端向服务器端提交数据的方式通常有两种:一种是___________提交方式;另一种是 ___________提交方式。 4.在JSP 内置对象中,与请求相关的对象是______________________。 5.___________被封装成接口,它用来向客户端输出内容。 6.Out 对象中用来输出各种类型数据并换行的方法是______________________。7.Out 对象中用来输出各种类型数据但不换行的方法是 ______________________。 8.Out 对象中用来输出一个换行符的方法是______________________。 9.Out 对象中用来关闭输出流的方法是______________________。 10.Out 对象中用来输出缓冲区里的数据的方法是______________________。11.Out 对象中用来清除缓冲区里的数据,并把数据写到客户端的方法是 ________________。 12.Out 对象中用来清除缓冲区里的数据,但不写到客户端的方法是 ___________________。 13.Out 对象中用来获得缓冲区大小的方法是______________________。14.Out 对象中用来获得缓冲区剩余空间大小的方法是 ______________________。 15.Out 对象中用来判断缓冲区是否自动刷新的方法是 ______________________。 16.Request 对象中用来获得服务器名字的方法是______________________。17.Request 对象中用来获得服务器的端口号的方法是 ______________________。 18.Request 对象中用来获得客户端的 IP 地址的方法是 ______________________。 19.Request 对象中用来获得客户端的计算机名字的方法是 ______________________方法。 20.Request 对象中用来获得客户端向服务器端传送数据的协议名称的方法是__________________。 21.___________是同应答相关的 HttpServletResponse类的一个对象,它封装了服务器对客户端的响应,然后被送到客户端以响应客户请求。22.Response对象中用来动态改变 contentType属性的方法是 ______________________。 23 . Response 对象中用来把响应发送到另一个指定的位置进行处理的方法是______________________。

jsp 图片上传功能实现原创

package com.lsl.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * * @author Administrator * 图像处理类 */ public class PicCompression { /** * 压缩图片方法 * * @param oldFile * 将要压缩的图片的绝对地址 * @param width * 压缩宽 * @param height * 压缩长 * @param quality * 压缩清晰度建议为1.0 * @param smallIcon * 压缩图片后,添加的扩展名 * @return */ public String zoom(String oldFile, int width, int height, float quality) { if (oldFile == null) { return null; } String newImage = null; try { File file = new File(oldFile);

JSP中上传图片 完整代码

upfile.jsp

uploadimage.jsp uploadimage.jsp
 <%@ page language="java" pageEncoding="gb2312"%> <%@ page import="java.io.*,java.awt.image.*,com.sun.image.codec.jpeg.*,jav a.sql.*,com.jspsmart.upload.*,java.util.*"%> <%@ page import="mainClass.*"%>   My JSP'uploadimage.jsp' starting page   <% S martUpload sma = new SmartUpload(); l ong file_max_size = 4000000; S tring filename1 = "", ext = "", testvar = ""; S tring url = "uploadfiles/"; s ma.initialize(pageContext); t ry { sma.setAllowedFilesList("jpg,gif"); sma.upload(); }catch (Exception e) { %>

JSP文件上传-二进制流详解

JSP文件上传 一、先做选择上传文件页面chose.jsp,比较简单。 代码如下: 关键代码是:

选择文件后的上传由upfile.jsp网页来处理;整个表单内容以post方式传递;表单中包含的所有内容,包括文件都会以enctype="multipart/form-data"二进制形式传给服务器。 注意JSP网页里不同的编码形式声明: charset=gb2312表示网页中包含的内容(比如文件)以简体中文编码; pageEncoding="UTF-8"表示JSP网页源代码本身是UTF-8编码。 因为表单form的内容会以二进制形式传到服务器,就必须用

charset=gb2312指定这个二进制是以中文简体来编码的,这样传上去以后真正处理上传和存储的upfile.jsp页才能看懂识别中文文件名! 选择文件页面比较简单,关键是编码的申明,必须说清楚,不然到时候中文文件名就会乱码。 二、upfile.jsp页用来接收和处理以二进制形式传给服务器的数据流。 1、二进制数据流的基本信息。 还是用request对象帮我们取从客户端传过来的各种信息,先取二进制数据流的整体长度,就是传过来文件的大小了,单位是字节。 int formDataLength = request.getContentLength(); 我们可以设置能接收的最大文件大小,比如下面,就是10M。 int MAX_SIZE = 10*1024*1024; 再取传过来的二进制数据流类型,不知道里面是什么鬼? String contentType = request.getContentType(); 不要紧,我们打出来看看就知道了,out.print编程时非常有用,随时打出来瞅瞅。 out.print(contentType);会看到下面这个: 主要就是要后面的这个东西 一个表单form可能选了多个文件,全部在一个二进制数据流里面一起传过来,那么文件数据之间都用这个间隔boundary隔开的。通过它才可以在二进制数据流中找到一个文件的开始和结束位置,从而将文件数据正确取出并保存到服务器里。 一个字节的位置错误都会造成文件保存出错!所以文件保存的最关键就是要找准位置,错一个字节都不行。

java实现图片或文件的上传功能实现代码

java实现图片或文件的上传功能具体思路及代码 一、思路 文件是如何从本地发送到服务器的呢? 首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。 然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理 详细代码如下:一个form将文件信息通过post方式传送到指定的servlet 二、代码 复制代码代码如下: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> "> My JSP 'upload.jsp' starting page 请选择上传的图片或文件:

实验3 JSP内置对象

实验三 JSP内置对象 一、实验目的 1.掌握JSP内置对象的用法 2.掌握request、out、response、session的实际应用 二、实验要求 1.认真完成实验内容并得到正确的程序运行结果。 2.为你的程序加上注释,使得其清晰可读。 3.利用调试程序来修改你程序的逻辑错误 4.本次实验要求写实验报告,交于下次实验课上交 三、实验原理 略 四、主要仪器及耗材 计算机及eclipse、Tomcat软件 五、实验内容与步骤 1.使用JSP开发一个简易酒店预订系统,功能需求如下: 1)创建login.html页面,输入用户名及密码进行登录,界面如下图所示

2、登录成功后进入酒店房间列表界面,如果用户名及密码有误则重定向制至login.html。 List roomList=new ArrayList(); Map room=new HashMap(); room.put(“roomName”,”zzzz”); room.put(“zc”,”1111”); room.put(“no”,”0”);

roomList.add(map); for(Map room: roomList) { out.println(room.get(“roomName“)) }

  精致山景房 双早 大/双 免费 ¥1788 ¥558
3、在上述页面中选择房间后,点击“提交预定”进入下图所示填写订单界面,显示用户选择的房间住处,并将用户信息自动填入联系人信息相关文本框中;如果用户没有登录或session超时,则重定向至login.html

ssh框架中jsp上传图片功能的实现

jspsmart的使用 上传 // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 上传初始化 su.initialize(pageContext); // 限制每个上传文件的最大长度。 su.setMaxFileSize(10000); // 限制总上传数据的长度。 su.setTotalMaxFileSize(20000); // 设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 su.setAllowedFilesList("doc,txt"); // 设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, //jsp,htm,html扩展名的文件和没有扩展名的文件。 su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 上传文件 su.upload(); // 将上传文件全部保存到指定目录 int count = su.save("/upload"); 下载 // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始化 su.initialize(pageContext); // 设定contentDisposition为null以禁止浏览器自动打开文件, //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为 //doc时,浏览器将自动用word打开它。扩展名为pdf时, //浏览器将用acrobat打开。 su.setContentDisposition(null); // 下载文件 su.downloadFile("/upload/test.doc"); 应用实例: uploadimage.jsp <%@ page contentType="text/html;charset=gb2312" language="java" import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.js psmart.upload.*,java.util.*"%> <%

Web技术及应用 实验3 JSP内置对象

Web技术及应用 实验3 JSP内置对象 [实验目的] 1.熟练掌握怎样在JSP页面中使用request内置对象。 2.熟练掌握怎样在JSP页面中使用response对象动态响应用户的请求。 3.熟练掌握怎样在JSP页面中使用session对象存储和用户有关的数据。 4.进一步熟悉其它JSP内置对象的用法。 [实验要求] 1.复习理论教学中所学的内容。 2.认真进行实验预习,查阅参考书,书写源程序。 3.实验完成后认真书写实验报告,着重记录实验过程中出现的问题、实验结果;分析 实验现象;总结涉及的知识点;再次实验,得出解决问题的方法,将其体现在实验 总结中。 [实验课时] 2学时 [实验教学方式] 学生上机实验,教师随堂指导。 [实验内容与步骤] 1.编写一个JSP页面inputNumber.jsp该页面提供一个表单,用户可以通过表单输入两个数和四则运算符号提交给该页面。用户提交表单后,JSP页面将计算任务交给一个Tag文件Computer.tag去完成。 inputNumber.jsp的具体要求 inputNumber.jsp页面提供一个表单,要求表单中提供两个text输入框,供用户输入数字;提供一个select下拉列表,该下拉列表有加、减、乘、除四个选项,供用户选择运算符号。用户在表单中输入的数字、选择运算符号提交给inputNumber.jsp页面。inputNumber.jsp使用Tag标记调用Tag文件Computer.tag,并将表单提交的数字和运算符号传递给Computer.tag。Computer.tag的具体要求 要求Computer.tag使用attribute指令得到JSP页面传递过来的值,使用variable指令将计算结果,并将计算结果返回给JSP页面。

java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile.

本文由我司收集整编,推荐下载,如有疑问,请与我司联系java 图片上传并预览,前台用jQuery 插件AjaxFileUpload,后台用 FileUtils.copyFile. 2015/01/05 0 个人笔记,以备后用. 表体代码: td colspan= 3 s:file label= 上传name= uploadFile id= uploadNumFile onchange= fileUpload( uploadNumFile , goodsRecordDtl_goodsPicture , goodsPicture_img ) / a href= # title= 查看quot;viewPic( viewPicture1 , goodsPicture , goodsRecordDtl_goodsPicture 查看图片/a div id= viewPicture1 title= 图片预览> img id= goodsPicture src= /div /td js 代码(记得要引入jquery 库和ajaxfileupload 库): //上传文件id 号function fileUpload(uploadFileId,filePathId,imgId){ var imp= document.getElementById(uploadFileId); if(imp==null ||imp== ||imp== undefined){ alert( 请选择文件return; } $.ajaxFileUpload({ url:ct + uploadFile.do , secureuri:false, fileElementId:uploadFileId, dataType: multipart/form-data , success: function (data, status){ var json = eval( ( + data + ) if(json.msg== 1 ){ alert( 上传成功$( # +filePathId).val(json.path); $( # +imgId).attr( src ,eTrade.ctx+ /upload/ +json.path); }else{ alert( 文件上传失败} }, error: function (data, status, e){ alert(e); } }); } function viewPic(dialogId,imgId,fileId){ $( # +dialogId).dialog({ height: 350, width: 600, buttons: { 取消: function() { $( # +imgId).attr( src , $(this).dialog( close } }, close:function(){ $( # +imgId).attr( src , } }); if($( # +fileId).val()== ){ return; } $( # +imgId).attr( src ,ct+ /toView.do?attachment= +$( # +fileId).val()); } 后台代码(uploadFile 命名必须与前台name= uploadFile 一致): private File uploadFile; public File getUploadFile() { return uploadFile; } public void setUploadFile(File uploadFile) { this.uploadFile = uploadFile; } @Action(value = uploadFile , results = { @Result(name = success , type = json , params = { ignoreHierarchy , false , contentType , text/html , root , dataMap }) }) public String

web程序设计-jsp实验

WEB程序设计(JSP)实验 计算机科学与信息学院汪国武 https://www.doczj.com/doc/2b16730707.html,/bigfive 实验一 JSP实验环境组建与简单JSP应用 1.开发环境搭建 Step1:安装和设置JDK 以jdk1.6为例,安装位置C:\Program Files\Java\jdk1.6.0_12 创建环境变量:JAVA_HOME为C:\Program Files\Java\jdk1.6.0_12 在建环境变量PATH中添加:%JAVA_HOME%\bin; 创建环境变量CLASSPATH: %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; Step2:安装支持JSP的Web服务器 以Tomcat6.0.29为例,安装位置d:\Tomcat6 Step3:安装MyEclipse 安装MyEclipse7.0 Step4:设置Tomcat,可以从MyEclipse中直接启动Tomcat6 操作步骤:Window→Preferences→MyEclipse Enterprise Workbench→ MyEclipse→Servers→Tomcat→Tomcat6.x ● Tomcat Server选择Enable ● Tomcat home directory:d:\tomcat6 ● 设置Tomcat运行使用的JDK:展开Tomcat6.x,单击JDK,单击tomcat JDK name:后的 Add,在打开的页面中,单击JRE home后的Directory按钮,选择输入C:\Program Files\Java\jdk1.6.0_12 2.开发和运行JSP程序 ? 创建Web项目 File→New→Web Project(如:Myjsp) ? 新建JSP文件(如firstJsp.jsp) ? 编辑JSP文件(可借助DreamWeaver) ? 发布项目到Tomcat 右击项目名称Myjsp→MyEclipse→Add and Remove Project Deployments Project:选择Myjsp项目,并单击Add,弹出Project Deployments对话框, 在对话框中,选择server为Tomcat 6.x,并单击Finish ? 运行测试

jsp图片上传(commons-fileupload组件)

1.开发环境: 1)eclipse3.2+tomcat5.5; 2)创建dynamic web project; 3)下载: Commons FileUpload 可以在https://www.doczj.com/doc/2b16730707.html,/commons/fileupload/下载 附加的Commons IO 可以在https://www.doczj.com/doc/2b16730707.html,/commons/io/下载 将commons-fileupload-1.2.1.jar commons-io-1.4.jar拷贝到WebContent\WEB-INF\\lib 目录; 2.前台: <;form method=";post"; enctype=";multipart/form-data"; action=";upload.jsp"; target=";_blank";>; <;%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传--%>; <;table>; <;tr>;<;td>;作品:<;input type=";file"; name=";upfile"; size=";50";>;<;/td>;<;/tr>; <;tr>;<;td>;作者:<;input type=";text"; name=";author"; size=";22";>; 标题:<;input type=";text"; name=";title"; size=";22";>; <;input type=";submit"; name=";submit"; value=";上传";>;<;/td>;<;/tr>; <;tr>;<;td>;备注:上传的jpg图片(显示扩展名为.jpg)大小不能超过4M!<;/td>;<;/tr>; <;/table>; <;/form>; 3.后台: 1)引用: <;%@ page import=";https://www.doczj.com/doc/2b16730707.html,mons.fileupload.servlet.ServletFileUpload";%>; <;%@ page import=";https://www.doczj.com/doc/2b16730707.html,mons.fileupload.disk.DiskFileItemFactory";%>; <;%@ page import=";https://www.doczj.com/doc/2b16730707.html,mons.fileupload.*";%>; 2)代码: String id=null;//上传记录id String destinationfileName=null;//目标文件名 String author=null; String title=null; int flag=0;//上传标志 String uploadPath =request.getSession().getServletContext().getRealPath(";/";)+";upload/";;//图片上传路径 String tempPath = request.getSession().getServletContext().getRealPath(";/";)+";upload/temp/";;//图片临时上传路径 String imagePath=request.getScheme()+";://";+request.getServerName()+";:";+request.getS erverPort()+request.getContextPath()+";/";; // 图片网络相对路径

“jsp内置对象”单元习题教学提纲

“j s p内置对象”单 元习题

“JSP内置对象”单元习题 一、填空题 1.JSP 中有9 种内置对象,它们分别是:___________、___________、response 对象、 pageContext 对象、 session对、 applicationt 对象、page 对象、 config 对象和 exception 对象。 2.Request对象可以使用___________方法获取表单提交的信息。 3.客户端向服务器端提交数据的方式通常有两种:一种是___________提交方式;另一种是 ___________提交方式。 4.在JSP 内置对象中,与请求相关的对象是______________________。5.___________被封装成 javax.servlet.JspWriter 接口,它用来向客户端输出内容。 6.Out 对象中用来输出各种类型数据并换行的方法是 ______________________。 7.Out 对象中用来输出各种类型数据但不换行的方法是 ______________________。 8.Out 对象中用来输出一个换行符的方法是______________________。9.Out 对象中用来关闭输出流的方法是______________________。 10.Out 对象中用来输出缓冲区里的数据的方法是______________________。11.Out 对象中用来清除缓冲区里的数据,并把数据写到客户端的方法是 ________________。

12.Out 对象中用来清除缓冲区里的数据,但不写到客户端的方法是 ___________________。 13.Out 对象中用来获得缓冲区大小的方法是______________________。14.Out 对象中用来获得缓冲区剩余空间大小的方法是 ______________________。 15.Out 对象中用来判断缓冲区是否自动刷新的方法是 ______________________。 16.Request 对象中用来获得服务器名字的方法是______________________。17.Request 对象中用来获得服务器的端口号的方法是 ______________________。 18.Request 对象中用来获得客户端的 IP 地址的方法是 ______________________。 19.Request 对象中用来获得客户端的计算机名字的方法是 ______________________方法。 20.Request 对象中用来获得客户端向服务器端传送数据的协议名称的方法是__________________。 21.___________是同应答相关的 HttpServletResponse类的一个对象,它封装了服务器对客户端的响应,然后被送到客户端以响应客户请求。22.Response对象中用来动态改变 contentType属性的方法是 ______________________。 23 . Response 对象中用来把响应发送到另一个指定的位置进行处理的方法 是______________________。

jsp实现文件上传和下载

1 JSP文件上传简单实例 1、index.html代码: 上传图片

2、使用到的函数和类说明 File类文件和目录路径名的抽象表示形式, File(parent,child)方法根据parent 抽象路径名和child 路径名字符串创建一个新File实例FileOutputStream文件输出流,InputStream输入流,将输入数据看成一根管道,可以形象的将输入流比喻成管道的入口,而输出流比喻成管道的出口。 read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个字节数组中。read() 从此输入流中读取一个数据字节。 write(int b) 将指定字节写入此文件输出流,write(byte[] b, int off, int len) 将指定字节数组中从偏移量off 开始的len 个字节写入此文件输出流。write(byte[] b) 将 b.length 个字节从指定字节数组写入此文件输出流中 Random.readLine()逐行读入,Random.seek(int pos)设置到此文件开头测量到的文件指针偏移量,该位置发生下一个读取和写入操作,Random.getFilePointer()返回此文件当前偏移量,Random.readByte()此方法从该文件的当前文件指针开始读取第一个字节。 https://www.doczj.com/doc/2b16730707.html,stIndexOf(char c)返回最后一次出现的指定字符在此字符串中的索引 3、do_upload.jsp <%@ page contentType="text/html;charset=gb2312" language="java"%> <%@ page import="java.io.*"%> 上传 <% try{ String temp=(String)session.getId();//获得sessionId File f1=new File((String)request.getRealPath("photo")+"/",temp); //获得photo所在的目

Java 如何改变图片大小的程序代码

Java 如何改变图片大小的程序代码 前面在做项目的时候,有一个需求是需要上传图片的,然而该图片只是简单的展示一些信息,不需要很大,所以在上传图片的时候改变图片的大小就显得很有必要了!然后就写了下面这个方法来改变图片的大小! Java代码 1. /** 2. * 改变图片的大小到宽为size,然后高随着宽等比例变化 3. * @param is 上传的图片的输入流 4. * @param os 改变了图片的大小后,把图片的流输出到目标OutputStream 5. * @param size 新图片的宽 6. * @param format 新图片的格式 7. * @throws IOException 8. */ 9. public static void resizeImage(InputStream is, OutputStream os, int size, String format) throws IOException { 10. BufferedImage prevImage = ImageIO.read(is); 11. double width = prevImage.getWidth(); 12. double height = prevImage.getHeight(); 13. double percent = size/width; 14. int newWidth = (int)(width * percent); 15. int newHeight = (int)(height * percent); 16. BufferedImage image = new BufferedImage(newWidth, newHeight,

相关主题
文本预览
相关文档 最新文档