1

以下のサーブレットを開発しました。ロジックは、名前が saral saxena と等しい場合、次のページに移動します。それ以外の場合はそうではありません。コードの下にも投稿しています。たとえば、異なるブラウザから 2 人の異なるユーザーが同じ URL にアクセスした場合、2 番目のユーザーについては、あなたが訪問者 No. 2 であることが示されます。以下は私の現在のコードです..

  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");
          }

        }
}

他のサーブレットは...

    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/

あなたの機能をビジターNo.に追加する方法を教えてください。

みんなアドバイスしてください。

4

1 に答える 1

1

1.コンテナにヒットするリクエストはユーザーごとではなく、同じブラウザからのものであっても、リクエストごとに1つです

2. service() メソッドは、リクエストが来てコンテナにヒットするたびに呼び出されるため、service()メソッド内にカウンターを配置して、サイトにアクセスしたユーザーの数をカウントします。

////////////編集済み////////////////

HttpServletの例を示しているので、メソッドは。の代わりにdoGetなります。ここにありますdoPost 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>" );
  }
}
于 2012-07-22T14:26:01.757 に答える