package example_3;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class MessageServlet extends HttpServlet {
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=GB2312");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
String strMsg=null;
request.setCharacterEncoding("GBK");
strMsg=request.getParameter("message");
if (strMsg==null||strMsg.equals("")) {
displayHtml(out);
} else {
ServletContext app=getServletContext();
StringBuffer objMsg=(StringBuffer)app.getAttribute("objMessage");
if(objMsg==null){
objMsg=new StringBuffer("");
}
String UserName=request.getParameter("name");//这段,我不明白这个name是指的哪里,好像我的这个文档里面就没有存名字的name,在别的文档又要怎么获得呢。
objMsg.append("<b>"+UserName+"说:</b>"+strMsg+"<br>");
app.setAttribute("objMessage", objMsg);
displayHtml(out);
}
out.flush();
out.close();
} public void displayHtml(PrintWriter out){
out.println("<html>");
out.println("<head><title>MessageServlet</title></head>");
out.println("<body bgcolor=\"#00ffff\" onload='javascript:frm.message.focus();'>");
out.println("<form method='post' name='frm'>");
out.println("<input type='textbox' name='message' size='40'>");
out.println("<input type='submit' value='发送'>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void init() throws ServletException {
// Put your code here
}}String UserName=request.getParameter("name");//
这个name是指这里的吗?如果是,取不到也正常了。是按照书上的例子写的,怀疑是书上写错了
out.println("<form method='post' name='frm'>");
out.println("<input type='textbox' name='message' size='40'>");
在这里面有存有名字
package example_3;import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class UserList extends HttpServlet {
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=GB2312");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("<meta HTTP-EQUIV='REFRESH' content='3;userlist'>");
out.println("  <HEAD><TITLE>UserList</TITLE></HEAD>");
out.println("  <BODY bgcolor=\"#ffff00\">");
Vector usr=(Vector)getServletContext().getAttribute("userArray");
request.setCharacterEncoding("GBK");
String UserName=request.getParameter("userName");
if (usr==null) {
throw new ServletException("Servlet中发生错误.");

for(int i=0;i<usr.size();i++)
{
if(String.valueOf(usr.get(i)).equals(UserName)){
out.println("<b>"+String.valueOf(usr.get(i))+"</b><br>");
}
else {
out.println(String.valueOf(usr.get(i))+"<br>");
}
}
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request,response);
}
public void init() throws ServletException {
// Put your code here
}}
要输出到这里package example_3;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class DisplayServlet extends HttpServlet { public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
ServletContext app=getServletContext();
StringBuffer strMsg=(StringBuffer)app.getAttribute("objMessage");
if(strMsg==null){
strMsg=new StringBuffer(" ");
}
displayHtml(out,strMsg);

out.flush();
out.close();
} public void displayHtml(PrintWriter out,StringBuffer msgBuffer){
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("<meta http-equiv='refresh' content='3;displayServlet'>");
out.println("  <HEAD><TITLE>MessageServlet</TITLE></HEAD>");
out.println("  <BODY bgcolor=\"#dd00ff\">");
out.println(msgBuffer.toString());
out.println("  </BODY>");
out.println("</HTML>");

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request,response);
} public void init() throws ServletException {
// Put your code here
}}
这是第一个页面
package example_3;import java.io.IOException;
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 UserServlet extends HttpServlet {
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=GBK");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>UserServlet</TITLE></HEAD>");
out.println("  <BODY bgcolor=\"#ffffff\" onload='javascript:frm.userName.focus();'>");
out.println("<FORM method=post action='/talk/servlet/main'name='frm'><center>请输入您的昵称<br><input type='text' " +
"name='userName'><input type='submit' value='聊天'></center></form>");
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request,response);
}
public void init() throws ServletException {
// Put your code here
}}

解决方案 »

  1.   

    String UserName=request.getParameter("name");//这段,我不明白这个name是指的哪里,好像我的这个文档里面就没有存名字的name,在别的文档又要怎么获得呢。
             这么多,这个name对应你表单或url提交过来的字段名; out.println("<FORM method=post action='/talk/servlet/main'name='frm'><center>请输入您的昵称<br><input type='text' " +
                    "name='userName'><input type='submit' value='聊天'></center></form>");
    估计是这个改成:String UserName=request.getParameter("userName");//名字要相同才取的到乃..
      

  2.   

     String UserName=request.getParameter("name");
    我没有查看全部的代码,只是解释下该语句。在这里的意思就是获取从客户端以get方式提交的数据,对应参数的名字为name,
    例:
    <input type="hidden" value="wiki" name="name"/>
    那我得到的userName就是wiki了。
    或者你想服务端发送请求的时候地址是这样的http://.../XXXservlet?name=wiki,就是获取问号后面name的值。
      

  3.   

    我就是想服务端发送请求的时候地址是这样的http://.../XXXservlet?name=wiki,就是获取问号后面name的值
    这样应该怎么做呢,1L说的用userName我试过了不行才来问的
      

  4.   

    String UserName=request.getParameter("userName")中userName 与<input type="text" name="userName"/>中的name属性值应该是相同的
      

  5.   

    http://.../XXXservlet?name=wiki类似这样的方式就是request.getParameter("name")去获取的,如果name不行的话,你换个别的名字试试,因为我也碰到过这样的问题,不知道是不是因为name属于那种关键字会造成取不到值。