一段servlet代码,请帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/06/11 17:42:29
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
response.setCharacterEncoding("GB2312");
PrintWriter out = response.getWriter();
String userName = request.getParameter("userName");
if(userName==null||userName==""){
out.print("<h1 style='color:red' align='center'>请返回并输入有效用户名<h1>");
}else{
Vector vec = (Vector)getServletContext().getAttribute("userArray");
if(vec==null){
vec = new Vector();
}if(!vec.contains(userName)){
vec.add(userName);
HttpSession ses = request.getSession();
ses.setAttribute("userName", userName);
getServletContext().setAttribute("userArray", vec);
out.print("<html>");
out.print("<frames

vector:向量

Vector vec = (Vector)getServletContext().getAttribute("userArray");

一个向量类型的vec变量,引用了一个ServletAttribute里面的一个值

放在session里面比较好传递……我是这样认为的……

(Vector)getServletContext().getAttribute("userArray")
我个人觉得呢,就像
(String)request.getSession.getAttribute("userArray")一样,是获取到getServletContext里面的属性,然后强制转成另外一种数据类型
ServletContext的信息是所有客户端共享的,所以感觉应该是获取用户列表,然后转成向量这种类型

关于Vector:
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

参数"userArray"是写代码的人内部定的,用来放值(Vector)的,也可以是"youruserArray" "myuserArray"……
vector是jdk的一种数据结构,堆栈,不过在新版本中已经淘汰
if(!vec.contains(userName)),是说如果vec中的元素不包括userName表示的字符串则……
可以放在request里,不过一般像用户名、用户权限放在session里,查询结果放在request里,因为session是用户在线期间一直存在的,request是这个请求期