我写了一个servlet为什么在domino上面就报错?

zzndino 2007-12-14 11:19:00
import java.io.IOException;
import javax.servlet.ServletContext;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Chat extends HttpServlet{
private static final String CONTENT_TYPE="text/xml";
public static final String COUNT_KEY = "chatcounts";
public void init() throws ServletException{}
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
System.out.println("---------------in doGet");
response.setContentType(CONTENT_TYPE);
System.out.println("---------------in doGet2");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter out = response.getWriter();
System.out.println("---------------in doGet3");
String useIp = request.getRemoteAddr();
int chatcounts = 0;
String appObject = null;
ServletContext application = getServletConfig().getServletContext();
try {
System.out.println("---------------in doGet3-1");
appObject = (String)this.getServletContext().getAttribute(new String( COUNT_KEY));
System.out.println("---------------in doGet3-2");
if (appObject != null) {
System.out.println("---------------in doGet3-3");
chatcounts = Integer.parseInt(appObject);
}
System.out.println("---------------in doGet4");
} catch (Exception ex) {
//ex.printStackTrace();
}
System.out.println("---------------in doGet4-1 appObject==="+appObject);
if (this.getServletContext().getAttribute(COUNT_KEY) == null) {
System.out.println("---------------in doGet4-2");
// request.getSession().getServletContext().setAttribute(COUNT_KEY, "0");
this.getServletContext().setAttribute(COUNT_KEY, "0");
System.out.println("---------------in doGet4-3 appObject==="+appObject);
}

if (request.getParameter("cont") != null &&
(!"0".equals(request.getParameter("cont")))) {
System.out.println("---------------in doGet6");

if (chatcounts < 21) {
chatcounts += 1;
} else if (chatcounts >= 21) {
chatcounts = 1;
}

this.getServletContext().setAttribute(COUNT_KEY, chatcounts + "");

String msgs = request.getParameter("cont");

System.out.println(changeEncoding(msgs, "ISO8859-1", "UTF-8"));
// \u4E0B\u9762\u8FD9\u53E5\u53EA\u662F\u4E3A\u4E86\u5728 Tomcat \u4E0B\u9762\u8FD0\u884C\u7684\u5B57\u7B26\u96C6\u95EE\u9898, \u5176\u5B83 Server \u8BF7\u914C\u60C5\u5904\u7406
msgs = changeEncoding(msgs, "ISO8859-1", "UTF-8");

this.getServletContext().setAttribute("ips" + chatcounts, useIp + "");

this.getServletContext().setAttribute("msgs" + chatcounts, msgs + "");

String names = request.getParameter("named");

if (names == null) {
names = "";
}
names = changeEncoding(names, "ISO8859-1", "UTF-8");

this.getServletContext().setAttribute("names" + chatcounts, names + "");
}

if ("cls".equals(request.getParameter("cont"))) {
this.getServletContext().removeAttribute("names");
this.getServletContext().removeAttribute("msgs");
this.getServletContext().removeAttribute(COUNT_KEY);
this.getServletContext().removeAttribute("ips");
}
out.close();
StringBuffer buffer=new StringBuffer();
buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
try {
buffer.append("<ppl>");
buffer.append("<num>" + chatcounts + "</num>");

int clien = 0;
try {
clien = Integer.parseInt(request.getParameter("clien"));
} catch (Exception ex) {
}

if("m".equals(request.getParameter("clien"))) {
buffer.append("<items><ip>"+ useIp +"</ip></items>");
}else if(clien < chatcounts) {
for(int i=clien; i<chatcounts; i++){
int s = i+1;
String useName = (String)this.getServletContext().getAttribute("names" + s);
String useMsg = (String)this.getServletContext().getAttribute("msgs" + s);
useIp = (String)this.getServletContext().getAttribute("ips" + s);
buffer.append("<items><name>" + useName + "</name><conts>" + useMsg + "</conts><ip>" + useIp + "</ip></items>");
}
} else if(clien > chatcounts) {
for(int i=clien; i<21; i++){
String useName = (String)this.getServletContext().getAttribute("names" + i);
String useMsg = (String)this.getServletContext().getAttribute("msgs" + i);
useIp = (String)this.getServletContext().getAttribute("ips" + i);
buffer.append("<items><name>" + useName + "</name><conts>" + useMsg + "</conts><ip>" + useIp + "</ip></items>");
}
for(int i=1; i<=chatcounts; i++){
String useNameM = (String)this.getServletContext().getAttribute("names" + i);
String useMsgM = (String)this.getServletContext().getAttribute("msgs" + i);
String useIpM = (String)this.getServletContext().getAttribute("ips" + i);
buffer.append("<items><name>" + useNameM + "</name><conts>" + useMsgM + "</conts><ip>" + useIpM + "</ip></items>");

}
}
buffer.append("</ppl>");
out.write(buffer.toString());
out.close();
}
catch (Exception ex) {
}
}
public static String changeEncoding(String input, String sourceEncoding,
String targetEncoding) {
System.out.println("---------------in changeEncoding");
if (input == null || input.equals("")) {
return input;
}
try {
byte[] bytes = input.getBytes(sourceEncoding);
return new String(bytes, targetEncoding);
} catch (Exception ex) {
}
return input;
}
String repla(String str) {
System.out.println("---------------in repla");
if (str == null) {
str = "";
}
str = str.replaceAll("/&/g", "&");
str = str.replaceAll("/>/g", ">");
str = str.replaceAll("/</g", "<");
str = str.replaceAll("/\"/g", """);
str = str.replaceAll("/\'/g", "'");
return str;
}
}


上面是我的代码,运行时一到
System.out.println("---------------in doGet4-2");
// request.getSession().getServletContext().setAttribute(COUNT_KEY, "0");
this.getServletContext().setAttribute(COUNT_KEY, "0");
这一步就报错
java.lang.NoSuchMethodError: javax/servlet/ServletContext.setAttribute(Ljava/lang/String:Ljava/lang/Object;)V的错
什么意思?
我应该怎样设置环境?
...全文
165 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhouyu 2007-12-20
  • 打赏
  • 举报
回复
domino的servlet采用的是标准servelt的一个子集,有很多的方法都是没有的。你看看是否有putValue方法
zzndino 2007-12-18
  • 打赏
  • 举报
回复
还有谁有什么办法吗?domino本身不支持setAttribute?
zzndino 2007-12-17
  • 打赏
  • 举报
回复
哈哈哈,你太逗了,我已经启动了,我很奇怪就是getAttribute没问题,就是不能setAttribute...
zgqasd 2007-12-15
  • 打赏
  • 举报
回复
日,忘了一个重要的地方,服务器配置文档里面要启用servlet哪个选项,你再试试。
zzndino 2007-12-14
  • 打赏
  • 举报
回复
恩,我想加载在jbuilder下面的tomcat5.5里面的servlet-api.jar,可是不知道怎么加载,能不能给指点一下具体步骤。多谢
zgqasd 2007-12-14
  • 打赏
  • 举报
回复
servlet包没有安装或者没有配置,要安装到domino目录下的
zzndino 2007-12-14
  • 打赏
  • 举报
回复
?给帮帮忙啊,谢谢
zzndino 2007-12-14
  • 打赏
  • 举报
回复
我试过了,我把它分别放在你说的目录和下一层ext目录都不行问题依然
zgqasd 2007-12-14
  • 打赏
  • 举报
回复
把servlet-api.jar拷贝到domino的lib目录下
然后修改notes.ini文件增加JavaUserClass = d:\..\..\lib\servlet-api.jar,重启domino即可。

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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