jsp中如何返回流览器的类型?

ttyy 2003-08-25 11:29:05
页面处理中,如何返回流览器的类型(IE,Netscape)?
...全文
52 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
joygxd 2003-08-26
  • 打赏
  • 举报
回复
学习
cao_zp 2003-08-26
  • 打赏
  • 举报
回复
jsp页面隐含对象request
你直接写<%= request.getHeader("User-Agent") %>就可以看到你的浏览器的标头
一般ie的头是Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
你只要搜索MSIE这几个字就知道是不是IE浏览器了
cainiao_2000 2003-08-26
  • 打赏
  • 举报
回复
上面的代码是起名为Browser.java就可以了,我调试过没有错的!
to: junnef(皮皮)
你的代码是自己查看自己浏览器的类型,不与服务器关联的,没有用处,比如服务器想针对特定浏览器显示特定的网页内容(因为浏览器之间有差异),你的就无能为力了!
cainiao_2000 2003-08-26
  • 打赏
  • 举报
回复
<%@ page import="Browser.*"%>对应的程序:

import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Browser extends HttpServlet
{
protected HttpServletRequest request;
protected HttpSession session;
protected String userAgent;
protected String company; // Firmenname des Herstellers
protected String name; // Bezeichnung des Browsers
protected String version; // Version
protected String os; // Betriebssystem
private Hashtable supportedLanguages; // Untersttzte Sprachen
public Browser(HttpServletRequest request, HttpSession session)
{
this.initialize();
this.request = request;
this.session = session;
this.setUserAgent(this.request.getHeader("User-Agent"));
this.setCompany();
this.setName();
this.setVersion();
this.setOs();
}
public void initialize()
{
this.supportedLanguages = new Hashtable(2);
this.supportedLanguages.put("en", "");
this.supportedLanguages.put("de", "");
}
public void setUserAgent(String httpUserAgent)
{
this.userAgent = httpUserAgent.toLowerCase();
}

// get company's name of browser
private void setCompany()
{
if (this.userAgent.indexOf("msie") > -1)
{
this.company = "Microsoft";
}
else if (this.userAgent.indexOf("opera") > -1)
{
this.company = "Opera Software";
}
else if (this.userAgent.indexOf("mozilla") > -1)
{
this.company = "Netscape Communications";
}
else
{
this.company = "unknown";
}
}
public String getCompany()
{
return this.company;
}

// get name of browser
private void setName()
{
if (this.company == "Microsoft")
{
this.name = "Microsoft Internet Explorer";
}
else if (this.company == "Netscape Communications")
{
this.name = "Netscape Navigator";
}
else if (this.company == "Operasoftware")
{
this.name = "Operasoftware Opera";
}
else
{
this.name = "unknown";
}
}
public String getName()
{
return this.name;
}

//get version of browser
private void setVersion()
{
int tmpPos;
String tmpString;
if (this.company == "Microsoft")
{
String str = this.userAgent.substring(this.userAgent.indexOf("msie") + 5);
this.version = str.substring(0, str.indexOf(";"));
}
else
{
tmpString = (this.userAgent.substring(tmpPos = (this.userAgent.indexOf("/")) + 1, tmpPos + this.userAgent.indexOf(" "))).trim();
this.version = tmpString.substring(0, tmpString.indexOf(" "));
}
}
public String getVersion()
{
return this.version;
}

// get Os of your computer
private void setOs()
{
if (this.userAgent.indexOf("win") > -1)
{
if (this.userAgent.indexOf("windows 95") > -1 || this.userAgent.indexOf("win95") > -1)
{
this.os = "Windows 95";
}
if (this.userAgent.indexOf("windows 98") > -1 || this.userAgent.indexOf("win98") > -1)
{
this.os = "Windows 98";
}
if (this.userAgent.indexOf("windows nt") > -1 || this.userAgent.indexOf("winnt") > -1)
{
this.os = "Windows NT";
}
if (this.userAgent.indexOf("win16") > -1 || this.userAgent.indexOf("windows 3.") > -1)
{
this.os = "Windows 3.x";
}
}
}
public String getOs()
{
return this.os;
}
}
junnef 2003-08-26
  • 打赏
  • 举报
回复
to:cainiao_2000(共同学习是快速进步的方法之一):
你的方法也很聪明,呵呵,通过判断上次请求的头,来取得公司名称,进而推出浏览器类型,互相学习,不过js的这个方法,在jsp出来之前就有了。
junnef 2003-08-26
  • 打赏
  • 举报
回复
你还可以检测显示器的分辨率,系统类型等等,要转向只要加window.location即可。
junnef 2003-08-26
  • 打赏
  • 举报
回复
对浏览器的类型处理的话,一般是判断客户端的,你用js判断出来之后,需要判断浏览器名字,然后使用window.location()转到不同的页面去。发给你一个经典的段子:

这个脚本检测访问者的浏览器类型,并用不同的MIDI来提示,非常的COOL!
将代码加入<BODY>区:声音文件自己随便选择.

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var MSIE=navigator.userAgent.indexOf("MSIE");
var NETS=navigator.userAgent.indexOf("Netscape");
var OPER=navigator.userAgent.indexOf("Opera");
if((MSIE>-1) || (OPER>-1)) {
document.write("<BGSOUND SRC=sound.mid LOOP=INFINITE>");
}
else {
document.write("<EMBED SRC=sound2.mid AUTOSTART=TRUE ");
document.write("HIDDEN=true VOLUME=100 LOOP=TRUE>");
}
// End -->
</SCRIPT>

  检测访问者使用的浏览器是IE还是NS,然后根据检测结果带领他们去相应的页面,可以有效地避免浏览器的不兼容导致的页面浏览异常,下面再给出一种方法:



代码非常简单,将如下代码加入HTML的<head>区:
<!-- 导向IE页面--->
<SCRIPT LANGUAGE="JavaScript">
<!---------- JavaScript begins...
URL = "IE.htm";
// 将此URL改为支持IE的页面
var name = navigator.appName
if (name == "Microsoft Internet Explorer")
window.location = URL;
// JavaScript ends ---------->
</SCRIPT>
<!-- 导向NS页面--->
<SCRIPT LANGUAGE="JavaScript">
<!---------- JavaScript begins...
URL = "NS.htm";
// 将此URL改为支持NS的页面
var name = navigator.appName
if (name == "Netscape")
window.location = URL;
// JavaScript ends ---------->
</SCRIPT>
cainiao_2000 2003-08-25
  • 打赏
  • 举报
回复
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="Browser.*"%>
<HTML>
<HEAD>
<TITLE>Get Browser</TITLE>
</HEAD>
<BODY>
<center>
<font size=5 color=blue>获得客户端浏览器信息</font>
<center>
<%
Browser eins = new Browser(request, session);
%>
<br>
<hr>
<br>
<font size=4 face="隶书" color=blue>
您使用的浏览器是:<%=eins.getName()%>
</font>
<br>
<font size=r face="隶书" color=blue>
它是<%=eins.getCompany()%>公司的<%=eins.getVersion()%>版
</font>
<br>
<font size=4 face="隶书" color=blue>
您使用的操作系统是:<%=eins.getOs()%>
</font>
<br>
</BODY>
</HTML>
junnef 2003-08-25
  • 打赏
  • 举报
回复
jsp是在服务器端编译运行的,所以对客户端浏览器无能为力,用javascript吧:
<script language="JavaScript">
var name = navigator.appName;
alert(name);
</script>
IE则name为:Microsoft Internet Explorer
Netscape则name为:Netscape
smartufo 2003-08-25
  • 打赏
  • 举报
回复
<%@ page import="Browser.*"%>错误!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧