2012-07-22 57 views
1

我开发了一个servlet,其中的逻辑是:如果name等于saral saxena,那么它移动到下一页,否则不会,我在我的代码下面也发布,我想要一个变化就是它也应该是访问者号码,如果来自不同浏览器的两个不同用户访问同一网址,那么第二个访问者应该显示你是第二访问者。下面是我当前的代码..在servlet中添加用户计数器的功能

package trial; 

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; 

/** 
* Servlet implementation class SendRedirectServlet 
*/ 
public class SendRedirectServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doPost(HttpServletRequest request, HttpServletResponse 
      response)throws ServletException, IOException { 
     //System.out.println("*************"); 

     response.setContentType("text/html"); 
      PrintWriter pw = response.getWriter(); 
      String name = request.getParameter("username"); 
      pw.println("<br> this output is generated by a simple servlet."); 
     String password = request.getParameter("password"); 
      if(name.equals("saral")&& password.equals("saxena")){ 
       response.sendRedirect("/ValidUserServlet"); 
      } 
      else{ 
      pw.println("u r not a valid user"); 
      } 

     } 
} 

其他的servlet是...

ackage trial; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletConfig; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


public class ValidUserServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 


    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 


     PrintWriter pw = response.getWriter(); 
      pw.println("Welcome to roseindia.net " + " "); 
      pw.println("how are you"); 


    } 


} 

和我的web.xml仪式现在是...

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 

    <servlet> 
    <servlet-name>s1</servlet-name> 
    <servlet-class>trial.SendRedirectServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>s1</servlet-name> 
    <url-pattern>/SendRedirectServlet</url-pattern> 
    </servlet-mapping> 

    <servlet> 
    <servlet-name>s2</servlet-name> 
    <servlet-class>trial.ValidUserServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>s2</servlet-name> 
    <url-pattern>/ValidUserServlet</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
<welcome-file>home.html</welcome-file> 
</welcome-file-list> 

</web-app> 

最后我的html页面是...

<html> 

<head> 
<title>New Page 1</title> 
</head> 

<body> 

<form method="post" action="/SendRedirectServlet"> 
    <p>Enter your name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input type="text" name="username" size="20"/></p> 
    <p>Enter your password&nbsp; <input type="text" name="password" 
    size="20"/></p> 
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp; 
    <input type="submit" value="Submit" name="B1"/></p> 
</form> 

</body> 

</html> 

快照项目结构是..

http://imageshack.us/photo/my-images/707/49690689.jpg/

请告知如何你是访客人数

人请指教添加该功能。

+0

欢迎roseindia.net?来吧,不要只是复制你在谷歌找到的代码... – MaVRoSCy 2012-07-23 05:34:47

回答

1

1.哪些匹配容器中的请求是不是每个用户,但每一个请求,即使其从相同的浏览器。

2.service()方法,每次叫请求时,命中集装箱,所以把里面的service()方法的计数器计数的用户数量访问您的网站。

//////////// EDITED ////////////////

现在本人表示的示例的HttpServlet该方法将是doGetdoPost而不是service()doGet()

下面是从roseindia.com一个例子

public class CounterServlet extends HttpServlet{ 
    public void doGet(HttpServletRequest request, 
    HttpServletResponse response) 
    throws ServletException, IOException { 
    HttpSession session = request.getSession(true); 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 
    Integer count = new Integer(0); 
    String head; 
    if (session.isNew()) { 
    head = "This is the New Session"; 
    } else { 
    head = "This is the old Session"; 
    Integer oldcount =(Integer)session.getValue("count"); 
    if (oldcount != null) { 
    count = new Integer(oldcount.intValue() + 1); 
    } 
    } 
    session.putValue("count", count); 
    out.println("<HTML><BODY BGCOLOR=\"#FDF5E6\">\n" + 
    "<H2 ALIGN=\"CENTER\">" + head + "</H2>\n" + 
    "<TABLE BORDER=1 ALIGN=CENTER>\n" 
    + "<TR BGCOLOR=\"#FFAD00\">\n" 
    +" <TH>Information Type<TH>Session Count\n" 
    +"<TR>\n" +" <TD>Total Session Accesses\n" + 
    "<TD>" + count + "\n" + 
    "</TABLE>\n" 
    +"</BODY></HTML>"); 
    } 
} 
+0

Vivek你可以请发布更新的代码,这将使理解更清楚 – user1538526 2012-07-22 15:27:55

+0

请参阅编辑部分... – 2012-07-22 16:30:01

+0

不应该同步计数器部分? – 2012-07-22 16:44:06