我写了一个servlet为什么在domino上面就报错?
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的错
什么意思?
我应该怎样设置环境?