① javaEE和javaweb的区别
javaweb是特制原sun公司出的一套以servlet规范的web层规范,是java在web方面的开发.围绕此规范的web服务器有tomcat,jetty,jboss等,我们可以使用sun公司提供的servlet规范结合实现了servlet规范的这些web服务器做java网站,这就是javaweb。
Java EE是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本。这个版本以前称为 J2EE。能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端 Java应用程序。Java EE 是在 Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构.javaEE是企业级应用开发平台,主要是围绕企业软件的开发提出来的一整套业务和技术解决方案,比如EJB和Spring体系平台,主要是解决软件开发过程中的数据持久化,事务机制,业务服务等。
其实这两者只是一个平台和一个模式的关系。就相当于电脑和操作系统。可以是笔记本电脑,可以用windows操作系统;也可以是台式机,用linux操作系统一个道理。但是呢,java web一般情况都用的是j2ee这个平台。
② 如何解决JavaWeb乱码问题
request-line中的URL部分必须以application/x-www-form-urlencoded方式编码。编码时使用的字符集是当前网页在浏览器上显示时所使用的字符集。
JDK中专门有两个类处理application/x-www-form-urlencoded类型的数据,它们是URLEncoder及URLDecoder。当网页上的数据需要手动进行URLEncoding处理时,可使用URLEncoder类完成编码工作。需要手动进行URLEncoding处理的位置包括:
链接(<a></a>)中的href标签属性;
以POST方式提交的表单(<form></form>)中的action标签属性。
<!--不正确的写法-->
<ahref="/hello/checkUser.html?opt=中文>使用者身份验证"</a>
<!--使用UTF-8字符集进行URLEncoding的结果-->
<ahref="/hello/checkUser.html?opt=%E4%B8%AD%E6%96%87">使用者身份验证</a>
<%@pageimport="java.net.URLEncoder"%>
<ahref="/hello/checkUser.html?opt=<%=URLEncoder.encode("中文","UTF-8")%>">使用者身份验证</a>
<formaction="checkUser.html?opt=xxx"method="POST">
<inputtype="text"name="username"value="yyy"/>
<inputtype="text"name="username"value="zzz"/>
<inupttype="submit"value="submit"/>
</form>
Stringopt=request.getParameter("opt");
String[]users=request.getParameterValues("username");
Stringopt=request.getParameter("opt");
if(opt!=null&&!"".equals(opt)){
opt=newString(opt.getBytes("ISO-8859-1"),"UTF-8");
}
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
{
privateStringencoding;
publicCharacterEncodingFilter(){
encoding=null;
}
publicvoiddestroy(){
encoding=null;
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
request.setCharacterEncoding(encoding);
chain.doFilter(request,response);
}
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
encoding=filterConfig.getInitParameter("encoding");
if(encoding==null||"".equals(encoding)){
encoding="UTF-8";
}
}
}
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
例如,网页上不应该产生这样的链接:
[xhtml]view plain
正确的写法是:
[xhtml]view plain
为此,方案之一可以在JSP网页上使用脚本化语言进行URLEncoding处理。如:
[xhtml]view plain
request-body的编码处理
request-body只有在POST提交的方式下才会产生。request-body的编码方式由表单的enctype标签属性指定,同request-line一样,编码request-body时使用的字符集也是当前网页在浏览器上显示时所使用的字符集。request-body的编码过程由客户端浏览器自动完成,不需要额外的编程处理。
服务器的处理
相对于用户端,服务器端在接收到HTTP请求时提供了两种处理请求数据的方式:自动处理与不处理。
服务器一般会自动处理application/x-www-form-urlencoded类型的数据(包括request-line及request-body中的数据),就servlet(Servlet类或JSP网页)而言,可以通过request对象的getParameter()或getParameterValues()取得这些数据。对于除此以外的其它MIME类型的数据,HTTP服务器则是将处理的过程直接交到了与HTTP请求相对应的servlet(Servlet类或JSP网页)身上。
例如用户端有以下表单被提交:
[xhtml]view plain
表单提交时经服务器端自动处理后与checkUser.html相对应的servlet(Servlet类或JSP网页)可以通过下面的方式取得数据:
[java]view plain
默认情况下,服务器对于接收到的application/x-www-form-urlencoded类型数据进行字符集为ISO-8859-1的URLDecoding处理,经过处理之后的字符串内码为ISO-8859-1。对于没有附加任何设置的HTTP服务器而言,我们的servlet在取得数据之后必须进行相应的解码处理,生成内码为UTF-16(unicode)的字符串。
例如对于用户端请求数据中以UTF-8字符集进行URLEncoding的数据,servlet需要进行如下方式的解码:
[java]view plain
为了避免这种额外的编码/解码处理,也就是说让服务器了解到用户端在URLEncoding时所使用的字符集,从而直接进行相应字符集的URLDecoding处理,不同的HTTP服务器提供了不同的解决方案。
以Tomcat为例,Tomcat自动解码request-line的处理方式由Tomcat的配置文件server.xml指定。在server.xml中的Connector标签中提供了URIEncoding标签属性,只要为其指定解码用的字符集,Tomcat就会自动解码request-line中经过application/x-www-form-urlencoded编码处理的数据。例如:
<Connector connectionTimeout="40000" port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8" redirectPort="8443"/>
Tomcat自动解码request-body的处理方式是设置request的characterEncoding值。如:
request.setCharacterEncoding("UTF-8");
但是这一操作必须提前在filter中完成,在servlet中使用此方法已经不起作用了。filter的例子如下:
[java]view plain
我们可以在web.xml使用这个filter。web.xml的相应配置如下:
[xhtml]view plain
通过上述两种方式的预处理,在servlet中取出的数据可以不必进行ISO-8859-1解码而直接使用。
字符集的选择
在处理application/x-www-form-urlencoded类型的数据过程中,需要注意的另一个问题是字符集的选择问题。如上所述,不论是request-line还是request-body,其URLEncoding所使用的字符集都是当前网页在浏览器上显示时所使用的字符集。而这个信息又是HTTP服务器端生成HTML网页时,在HTTP响应中提供的。
当HTTP服务器接收到一个HTTP请求时,服务器总是需要向用户端发送一个HTTP响应。HTTP响应数据与HTTP请求数据格式相同,同样由以下几个部分组成:
<response-line>
<headers>
<CRLF>
[<response-body><CRLF>]
下面描述的是请求一个HTML网页数据时服务器的响应信息:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 265
Date: Thu, 17 Dec 2009 05:20:36 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>test</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
[End]
其中headers的Content-Type指定了数据流的数据格式以及显示用的字符集。这一指标可以通过以下几种方式指定:
1. HTML网页
在HTML网页的<head></head>中存在多个<meta/>标签,其中可以设置Content-Type。例如:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2. JSP网页
JSP网页中,除了<meta/>标签之外,还需要在JSP网页头部设置如下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
3. Servlet类
如果要在Servlet类中通过response向用户端传送HTML数据,需要在传送前指定Content-Type。代码如下:
response.setContentType("text/html;charset=UTF-8");
通过上述三种方式,可以确保响应数据传送到用户端浏览器时,浏览器使用正确解码方式和字符集显示其内容。
结束语
总之,Content-Type是联系用户端与服务器端的纽带,通过这一指标,双方得以对相关的数据进行正确的编码与解码。只要了解了Content-Type的作用以及使用方法,乱码问题就会迎刃而解。
③ 如何在 Web 浏览器中启用 Java
请按照以下说明通过您的 Web 浏览器启用 Java:
适用于 Windows 的浏览器
Internet Explorer
单击工具,然后单击 Internet 选项
选择安全选项卡,选择自定义级别按钮
向下滚动到 Java 小应用程序脚本
确保选中启用单选按钮
单击确定保存您的首选设置
Chrome
单击扳手图标,然后选择选项。
依次选择高级选项和隐私内容设置。
将显示“内容设置”面板。
在插件部分,选择禁用单独插件链接以检查是否已启用 Java
单击启用链接(如果显示“禁用”链接,则已启用 Java)
注意:此外,您也可通过在浏览器地址栏中 键入“about:plugins” 来访问“插件”设置。
适用于 Windows 和 Mac OS X 的浏览器
Firefox
启动 Mozilla Firefox 浏览器,如果该浏览器正在运行,则重新启动它。
在浏览器顶部,选择 Firefox 按钮(或 Windows XP 中的工具菜单),然后选择附加组件
此时将打开“附加组件管理器”选项卡。
在“附加组件管理器”选项卡中,选择插件
单击 Java (TM) 平台插件以将其选定
单击启用按钮(如果按钮显示为禁用,则 Java 已启用)
Safari
启动 Safari 浏览器
单击“Safari”并选择首选项
单击安全选项卡
选中(选择)启用 Java 复选框
关闭“Safari 首选项”窗口
Opera 4.x 及更高版本
适用于 Windows 的 Opera 不使用 Java,但是 Opera Web 浏览器中已嵌入了 Java。
适用于其他平台的 Opera 可支持 Java。请参见 Opera 平台文档。
有关详细信息,请参见以下 Opera 支持文档:
Opera 中的 Java 软件支持
抢首赞
评论
分享
举报
河南新华电脑学院
2021-10-26 · 专注互联网IT教育,电脑培训院校
关注
启动Mozilla Firefox 浏览器,如果该浏览器正在运行,则重新启动它。
在浏览器顶部,选择Firefox按钮(或 Windows XP 中的工具菜单)...
在“附加组件管理器”选项卡中,选择插件
单击Java (TM) 平台插件以将其选定
④ web服务器的缺陷是什么java是怎么样解决这个缺陷的
Web服务器的缺陷是什么?Java是怎么样解决这个缺陷的?因为web服务器是被设计用来向客户端提供HTTP服务的,它只能向客户端提供静态的网页内容,不能创建动态服务器端内容。java解决方案servlet和web容器对请求和响应的处理如下:1.客户端向web服务器发起一个HTTP请求;2.HTTP请求被WEB服务器接受,如果请求是静态页面,则由web服务器负责处理,如果请求是javaweb主件,则交给Web容器。Web容器可以在主机的同一个进程、不同的行程或其他的web服务器主机的进程中启动。3.web容器根据Servlet的配置文件确定调用具体的Servlet类,并把request对象、response对象传给它。4.Servlet通过request对象知道客户端的使用者是谁,客户的请求信息是什么和其他的一些信息。Servlet处理完请求后吧要返回的信息放入response对象返回到客户端。5.一旦Servlet完成请求的处理,web容器就会刷新response。并把控制权返回给web服务器。
⑤ 基于web的报表开发的JAVA有什么好的解决方案
基于JAVA报表开发的方案有多种,简单的说一下:
第一种是自己编码来做报表,这种解决方案成本高、技术要求高,效率底,但是可以完全掌控
第二种是用开源的报表工具,这种解决方案技术要求一般,有隐形成本,无服务,效率中等。
第三种是用商业的报表工具,这种解决方案效率高,技术要求底,有服务。成本的高低要看您所选择的厂家,推荐皕杰报表
⑥ javaweb防止表单重复提交的几种解决方案
1.js方法解决:关于js方法解决就是说通过js动态控制提交按钮不能多次点击,或者多次点击不起作用。
方案一:通过设立标识使表单不能重复提交:
要强调的是,利用session方法解决表单重复问题是十分完美的,基本上可以应对各种重复提交问题。
但!是不是之前在客户端防止表单重复提交的种种方法就不使用了呢?
答案是否定的,我们需要多种方法混合使用才能达到最好的效果,也许有人会问,不是说session方法基本可以应对各种重复提交问题了吗?
这里我们所说的达到最好效果指的是,给用户更好地体验,例如用户点击了提交按钮,这时将按钮变为不可用的,用以告诉用户你已经提交内容了,不可重复提交。还有如果无论什么情况都用session防止表单重复提交问题,反而无形的增加了服务器端的负担。
⑦ Java Web 乱码 求解决方案
以下提到的地方,你都做一下检查,这是平时总结的,但愿对你有帮助
最基本的乱码问题
这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。
Html代码:
<%@ page language="java" pageEncoding="UTF-8"%>? <%@ page contentType="text/html;charset=iso8859-1"%>? <html>? <head>? <title>中文问题</title>? <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">? </head>? </head>? <body>? JSP中文编码问题解决方法详解? </body>? </html>?
三个地方的编码
第一个地方的编码格式为jsp文件的存储格式。Ecljpse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,“我是个好人”也会出现乱码。必须一致才可以。
第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。
表单使用Post方式提交后接收到的乱码问题
这个问题也是一个常见的问题。这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。
a. 接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;
这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
b. 在请求页面上开始处,执行请求的编码代码
request.setCharacterEncoding("UTF-8")
把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用
String str = request.getParameter("something");
即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。
c. 为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。这个网上有很多例子。请大家自己查阅。
表单get提交方式的乱码处理方式
如果使用get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因也是tomcat的内部编码格式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码/、。
解决办法:
a. 使用上例中的第一种方式,对接受到的字符进行解码,再转码。
b. Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理。要想影响这个编码则需要在server.xml的Connector节点增加useBodyEncodingForURI="true"属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码。所以自动编码为utf-8,接受页面正常接受就可以了。但我认为真正的编码过程是,tomcat又要根据
<Connector port="8080"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"disableUploadTimeout="true" URIEncoding=”UTF-8”/>
里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会有变化了。如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的。
上传文件时的乱码解决
上传文件时,form表单设置的都是enctype="multipart/form-data"。这种方式以流方式提交文件。如果使用apach的上传组件,会发现有很多乱码想象。这是因为apach的先期commons-fileupload.jar有bug,取出汉字后进行解码,因为这种方式提交,编码又自动使用的是tomcat缺省编码格式iso-8859-1。但出现的乱码问题是:句号,逗号,等特殊符号变成了乱码,汉字如果数量为奇数,则会出现乱码,偶数则解析正常。
解决方式:
下载commons-fileupload-1.1.1.jar 这个版本的jar已经解决了这些bug。但是取出内容时仍然需要对取出的字符进行从iso8859-1到utf-8转码。已经能得到正常所有汉字以及字符。
Java代码关于url请求,接受参数的乱码
url的编码格式,取决于上面所说的URIEncoding=”UTF-8”。如果设定了这个编码格式,则意味着所有到url的汉字参数,都必须进行编码才可以。否则得到的汉字参数值都是乱码,例如一个链接:
Response.sendDerect(“/a.jsp?name=玫瑰妮子”);
而在a.jsp里面直接使用 String name = request.getParameter("name");
得到的就是乱码。因为规定了必须是utf-8才可以,所以,这个转向应该这样写:
Response.sendDerect(“/a.jsp?name=URLEncode.encode(“玫瑰妮子”,”utf-8”);才可以。
如果不设置这个参数URIEncoding=”UTF-8”,会怎么样呢? 不设置则就使用了缺省的编码格式iso8859-1。问题又出来了,第一就是参数值的个数如果是奇数个数,则就可以正常解析,如果使偶数个数,得到最后字符就是乱码。还有就是如果最后一个字符如果是英文,则就能正常解析,但中文的标点符号仍出现乱码。权宜之计,如果您的参数中没有中文标点符号,则可以在参数值最后加一个英文符号来解决乱码问题,得到参数后再去掉这个最后面的符号。也可以凑或使用。
脚本代码关于url请求,接受到的参数乱码
脚本中也会进行页面转向的控制,也会涉及到附带参数,并在接受页面解析这个参数的情况。如果这个汉字参数不进行URIEncoding=”UTF-8”所指定的编码处理,则接受页面接受到的汉字也是乱码。脚本处理编码比较麻烦,必须有相应的编码脚本对应文件,然后调用脚本中的方法对汉字进行编码即可。
关于jsp在MyEclipse中打开的乱码问题
对于一个已经存在的项目,Jsp文件的存储格式可能是utf-8。如果新安装的eclipse,则缺省打开使用的编码格式都是iso8859-1。所以导致jsp里面的汉字出现乱码。这个乱码比较容易解决,直接到eclipse3.1的偏好设置里面找到general-〉edidor,设置为您的文件打开编码为utf-8即可。Eclipse会自动重新以新的编码格式打开。汉字即可正常显示。
关于html页面在eclipse中打开出现乱码情况
由于大部分页面都是由dreamweaver制作,其存储格式跟eclipse的识别有差别导致。一般这种情况,在eclipse中新建一个jsp,直接从dreamweaver复制页面内容粘贴到jsp即可。
⑧ java web工程里面中文乱码了
如果是用的tomact做容器,打开server.xml,看一下是否编码设置正确。如下URIEncoding的值:
<Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"URIEncoding="UTF-8"/>
⑨ javaweb项目,字段经常变动,有什么好的解决方案吗
我能想到的也是做动态字段,再弄一个表。等着看看谁有好想法
⑩ java web 登录次数限制,该如何解决
java web 登录次数限制 一个用户登录系统,如果他一分钟之内连续登录 3 次,就让他在 15 分钟之内无法再登录, ------解决方案-------------------------------------------------------- 将用户的每次登录都记入登录日志表 每次登录的时候,去查最近15 分钟内,是否存在连续3 次登录发生在一分钟之内的 ------解决方案-------------------------------------------------------- 呵呵,好方法啊.但这样会不会数据库服务器很累啊 ------解决方案--------------------------------------------------------引用: 将用户的每次登录都记入登录日志表 每次登录的时候,去查最近15 分钟内,是否存在连续3 次登录发生在一分钟之内的 这是个方法. 不过总查数据库应该是有些不妥的.! 不过暂时还想不到更好的办法.! 再去想想 ------解决方案-------------------------------------------------------- 如果以后不需要日志查询和审计,可以使用缓存而不是数据库,把每次登陆的信息(登陆名、 时间) 这些放入缓存。然后每次登陆时查询缓存就可以了。 ------解决方案-------------------------------------------------------- ------解决方案-------------------------------------------------------- 如果你不想用数据库的形式的话,用session 存下试试。 先声明下,我没用过: 在用户登录时候,如果成功不记录session,如果登录不成功,记录下session +1; 到第三次,就不让登录了。session 的有效期设置为15 分钟。.setMaxInactiveInterval(15