<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FServlet%2FAuthentication</id>
		<title>Java Tutorial/Servlet/Authentication - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FServlet%2FAuthentication"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Servlet/Authentication&amp;action=history"/>
		<updated>2026-04-21T21:35:48Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Servlet/Authentication&amp;diff=4916&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Servlet/Authentication&amp;diff=4916&amp;oldid=prev"/>
				<updated>2010-06-01T05:06:58Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:06, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Servlet/Authentication&amp;diff=4915&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Servlet/Authentication&amp;diff=4915&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  A password protected servlet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import javax.servlet.ServletException;&lt;br /&gt;
import javax.servlet.http.HttpServlet;&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpServletResponse;&lt;br /&gt;
import org.bouncycastle.crypto.Digest;&lt;br /&gt;
import org.bouncycastle.crypto.digests.SHA1Digest;&lt;br /&gt;
public class PasswordServlet extends HttpServlet {&lt;br /&gt;
  public void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;
      throws ServletException, IOException {&lt;br /&gt;
    System.out.println(&amp;quot;user = &amp;quot; + request.getParameter(&amp;quot;user&amp;quot;));&lt;br /&gt;
    System.out.println(&amp;quot;timestamp = &amp;quot; + request.getParameter(&amp;quot;timestamp&amp;quot;));&lt;br /&gt;
    System.out.println(&amp;quot;random = &amp;quot; + request.getParameter(&amp;quot;random&amp;quot;));&lt;br /&gt;
    System.out.println(&amp;quot;digest = &amp;quot; + request.getParameter(&amp;quot;digest&amp;quot;));&lt;br /&gt;
    String user = request.getParameter(&amp;quot;user&amp;quot;);&lt;br /&gt;
    String password = lookupPassword(user);&lt;br /&gt;
    String timestamp = request.getParameter(&amp;quot;timestamp&amp;quot;);&lt;br /&gt;
    String randomNumber = request.getParameter(&amp;quot;random&amp;quot;);&lt;br /&gt;
    byte[] userBytes = user.getBytes();&lt;br /&gt;
    byte[] timestampBytes = HexCodec.hexToBytes(timestamp);&lt;br /&gt;
    byte[] randomBytes = HexCodec.hexToBytes(randomNumber);&lt;br /&gt;
    byte[] passwordBytes = password.getBytes();&lt;br /&gt;
    Digest digest = new SHA1Digest();&lt;br /&gt;
    digest.update(userBytes, 0, userBytes.length);&lt;br /&gt;
    digest.update(timestampBytes, 0, timestampBytes.length);&lt;br /&gt;
    digest.update(randomBytes, 0, randomBytes.length);&lt;br /&gt;
    digest.update(passwordBytes, 0, passwordBytes.length);&lt;br /&gt;
    byte[] digestValue = new byte[digest.getDigestSize()];&lt;br /&gt;
    digest.doFinal(digestValue, 0);&lt;br /&gt;
    String message = &amp;quot;&amp;quot;;&lt;br /&gt;
    String clientDigest = request.getParameter(&amp;quot;digest&amp;quot;);&lt;br /&gt;
    if (isEqual(digestValue, HexCodec.hexToBytes(clientDigest)))&lt;br /&gt;
      message = &amp;quot;User &amp;quot; + user + &amp;quot; logged in.&amp;quot;;&lt;br /&gt;
    else&lt;br /&gt;
      message = &amp;quot;Login was unsuccessful.&amp;quot;;&lt;br /&gt;
    response.setContentType(&amp;quot;text/plain&amp;quot;);&lt;br /&gt;
    response.setContentLength(message.length());&lt;br /&gt;
    PrintWriter out = response.getWriter();&lt;br /&gt;
    out.println(message);&lt;br /&gt;
  }&lt;br /&gt;
  private String lookupPassword(String user) {&lt;br /&gt;
    return &amp;quot;happy8&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  private boolean isEqual(byte[] one, byte[] two) {&lt;br /&gt;
    if (one.length != two.length)&lt;br /&gt;
      return false;&lt;br /&gt;
    for (int i = 0; i &amp;lt; one.length; i++)&lt;br /&gt;
      if (one[i] != two[i])&lt;br /&gt;
        return false;&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class HexCodec {&lt;br /&gt;
  private static final char[] kDigits = { &amp;quot;0&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;5&amp;quot;, &amp;quot;6&amp;quot;, &amp;quot;7&amp;quot;, &amp;quot;8&amp;quot;, &amp;quot;9&amp;quot;, &amp;quot;a&amp;quot;,&lt;br /&gt;
      &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot; };&lt;br /&gt;
  public static char[] bytesToHex(byte[] raw) {&lt;br /&gt;
    int length = raw.length;&lt;br /&gt;
    char[] hex = new char[length * 2];&lt;br /&gt;
    for (int i = 0; i &amp;lt; length; i++) {&lt;br /&gt;
      int value = (raw[i] + 256) % 256;&lt;br /&gt;
      int highIndex = value &amp;gt;&amp;gt; 4;&lt;br /&gt;
      int lowIndex = value &amp;amp; 0x0f;&lt;br /&gt;
      hex[i * 2 + 0] = kDigits[highIndex];&lt;br /&gt;
      hex[i * 2 + 1] = kDigits[lowIndex];&lt;br /&gt;
    }&lt;br /&gt;
    return hex;&lt;br /&gt;
  }&lt;br /&gt;
  public static byte[] hexToBytes(char[] hex) {&lt;br /&gt;
    int length = hex.length / 2;&lt;br /&gt;
    byte[] raw = new byte[length];&lt;br /&gt;
    for (int i = 0; i &amp;lt; length; i++) {&lt;br /&gt;
      int high = Character.digit(hex[i * 2], 16);&lt;br /&gt;
      int low = Character.digit(hex[i * 2 + 1], 16);&lt;br /&gt;
      int value = (high &amp;lt;&amp;lt; 4) | low;&lt;br /&gt;
      if (value &amp;gt; 127)&lt;br /&gt;
        value -= 256;&lt;br /&gt;
      raw[i] = (byte) value;&lt;br /&gt;
    }&lt;br /&gt;
    return raw;&lt;br /&gt;
  }&lt;br /&gt;
  public static byte[] hexToBytes(String hex) {&lt;br /&gt;
    return hexToBytes(hex.toCharArray());&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get Auth Type from Servlet Request ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.*;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import javax.servlet.*;&lt;br /&gt;
import javax.servlet.http.*;&lt;br /&gt;
import java.security.*;&lt;br /&gt;
public class MyServlet extends HttpServlet {&lt;br /&gt;
   &lt;br /&gt;
    public void init(ServletConfig cfg) throws ServletException &lt;br /&gt;
    {&lt;br /&gt;
        super.init(cfg);&lt;br /&gt;
    } &lt;br /&gt;
    public void doGet(HttpServletRequest request, HttpServletResponse response) &lt;br /&gt;
        throws IOException, ServletException &lt;br /&gt;
    {&lt;br /&gt;
        response.setContentType(&amp;quot;text/html&amp;quot;);&lt;br /&gt;
        PrintWriter out = response.getWriter();&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;HTML&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;HEAD&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;TITLE&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;User Authentication&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;/TITLE&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;/HEAD&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;BODY&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;H1&amp;gt;User Authentication&amp;lt;/H1&amp;gt;&amp;quot;);&lt;br /&gt;
        String type = request.getAuthType();&lt;br /&gt;
        out.println(&amp;quot;Welcome to this secure page.&amp;lt;BR&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;Authentication mechanism: &amp;quot; + type + &amp;quot;&amp;lt;BR&amp;gt;&amp;quot;);&lt;br /&gt;
        Principal principal = request.getUserPrincipal();&lt;br /&gt;
        out.println(&amp;quot;Your username is: &amp;quot; + principal.getName() + &amp;quot;&amp;lt;BR&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;/BODY&amp;gt;&amp;quot;);&lt;br /&gt;
        out.println(&amp;quot;&amp;lt;/HTML&amp;gt;&amp;quot;);&lt;br /&gt;
    } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Servlet Login ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.util.*;&lt;br /&gt;
import javax.servlet.*;&lt;br /&gt;
import javax.servlet.http.*;&lt;br /&gt;
public class MyServlet extends HttpServlet {&lt;br /&gt;
  public void doPost(HttpServletRequest req, HttpServletResponse res)&lt;br /&gt;
                                throws ServletException, IOException {&lt;br /&gt;
    res.setContentType(&amp;quot;text/html&amp;quot;);&lt;br /&gt;
    PrintWriter out = res.getWriter();&lt;br /&gt;
    String account = req.getParameter(&amp;quot;account&amp;quot;);&lt;br /&gt;
    String password = req.getParameter(&amp;quot;password&amp;quot;);&lt;br /&gt;
    String pin = req.getParameter(&amp;quot;pin&amp;quot;);&lt;br /&gt;
    if (!allowUser(account, password, pin)) {&lt;br /&gt;
      out.println(&amp;quot;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;Access Denied&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;&amp;quot;);&lt;br /&gt;
      out.println(&amp;quot;&amp;lt;BODY&amp;gt;Your login and password are invalid.&amp;lt;BR&amp;gt;&amp;quot;);&lt;br /&gt;
      out.println(&amp;quot;You may want to &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Servlet with bouncy castle security package ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.PrintWriter;&lt;br /&gt;
import javax.servlet.ServletException;&lt;br /&gt;
import javax.servlet.http.HttpServlet;&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpServletResponse;&lt;br /&gt;
import javax.servlet.http.HttpSession;&lt;br /&gt;
import org.bouncycastle.crypto.StreamCipher;&lt;br /&gt;
import org.bouncycastle.crypto.engines.RC4Engine;&lt;br /&gt;
import org.bouncycastle.crypto.params.KeyParameter;&lt;br /&gt;
public class StealthServlet extends HttpServlet {&lt;br /&gt;
  public void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;
      throws ServletException, IOException {&lt;br /&gt;
    String user = request.getParameter(&amp;quot;user&amp;quot;);&lt;br /&gt;
    HttpSession session = request.getSession();&lt;br /&gt;
    StreamCipher inCipher = (StreamCipher) session.getAttribute(&amp;quot;inCipher&amp;quot;);&lt;br /&gt;
    StreamCipher outCipher = (StreamCipher) session.getAttribute(&amp;quot;outCipher&amp;quot;);&lt;br /&gt;
    if (inCipher == null &amp;amp;&amp;amp; outCipher == null) {&lt;br /&gt;
      byte[] inKey = getInKey(user);&lt;br /&gt;
      byte[] outKey = getOutKey(user);&lt;br /&gt;
      inCipher = new RC4Engine();&lt;br /&gt;
      outCipher = new RC4Engine();&lt;br /&gt;
      inCipher.init(true, new KeyParameter(inKey));&lt;br /&gt;
      outCipher.init(false, new KeyParameter(outKey));&lt;br /&gt;
      session.setAttribute(&amp;quot;inCipher&amp;quot;, inCipher);&lt;br /&gt;
      session.setAttribute(&amp;quot;outCipher&amp;quot;, outCipher);&lt;br /&gt;
    }&lt;br /&gt;
    String clientHex = request.getParameter(&amp;quot;message&amp;quot;);&lt;br /&gt;
    byte[] clientCiphertext = HexCodec.hexToBytes(clientHex);&lt;br /&gt;
    byte[] clientDecrypted = new byte[clientCiphertext.length];&lt;br /&gt;
    inCipher.processBytes(clientCiphertext, 0, clientCiphertext.length, clientDecrypted, 0);&lt;br /&gt;
    System.out.println(&amp;quot;message = &amp;quot; + new String(clientDecrypted));&lt;br /&gt;
    String message = &amp;quot;Hello, this is StealthServlet.&amp;quot;;&lt;br /&gt;
    byte[] plaintext = message.getBytes();&lt;br /&gt;
    byte[] ciphertext = new byte[plaintext.length];&lt;br /&gt;
    outCipher.processBytes(plaintext, 0, plaintext.length, ciphertext, 0);&lt;br /&gt;
    char[] hexCiphertext = HexCodec.bytesToHex(ciphertext);&lt;br /&gt;
    response.setContentType(&amp;quot;text/plain&amp;quot;);&lt;br /&gt;
    response.setContentLength(hexCiphertext.length);&lt;br /&gt;
    PrintWriter out = response.getWriter();&lt;br /&gt;
    out.println(hexCiphertext);&lt;br /&gt;
  }&lt;br /&gt;
  private byte[] getInKey(String user) {&lt;br /&gt;
    return &amp;quot;Outgoing MIDlet key&amp;quot;.getBytes();&lt;br /&gt;
  }&lt;br /&gt;
  private byte[] getOutKey(String user) {&lt;br /&gt;
    return &amp;quot;Incoming MIDlet key&amp;quot;.getBytes();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class HexCodec {&lt;br /&gt;
  private static final char[] kDigits = { &amp;quot;0&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;5&amp;quot;, &amp;quot;6&amp;quot;, &amp;quot;7&amp;quot;, &amp;quot;8&amp;quot;, &amp;quot;9&amp;quot;, &amp;quot;a&amp;quot;,&lt;br /&gt;
      &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot; };&lt;br /&gt;
  public static char[] bytesToHex(byte[] raw) {&lt;br /&gt;
    int length = raw.length;&lt;br /&gt;
    char[] hex = new char[length * 2];&lt;br /&gt;
    for (int i = 0; i &amp;lt; length; i++) {&lt;br /&gt;
      int value = (raw[i] + 256) % 256;&lt;br /&gt;
      int highIndex = value &amp;gt;&amp;gt; 4;&lt;br /&gt;
      int lowIndex = value &amp;amp; 0x0f;&lt;br /&gt;
      hex[i * 2 + 0] = kDigits[highIndex];&lt;br /&gt;
      hex[i * 2 + 1] = kDigits[lowIndex];&lt;br /&gt;
    }&lt;br /&gt;
    return hex;&lt;br /&gt;
  }&lt;br /&gt;
  public static byte[] hexToBytes(char[] hex) {&lt;br /&gt;
    int length = hex.length / 2;&lt;br /&gt;
    byte[] raw = new byte[length];&lt;br /&gt;
    for (int i = 0; i &amp;lt; length; i++) {&lt;br /&gt;
      int high = Character.digit(hex[i * 2], 16);&lt;br /&gt;
      int low = Character.digit(hex[i * 2 + 1], 16);&lt;br /&gt;
      int value = (high &amp;lt;&amp;lt; 4) | low;&lt;br /&gt;
      if (value &amp;gt; 127)&lt;br /&gt;
        value -= 256;&lt;br /&gt;
      raw[i] = (byte) value;&lt;br /&gt;
    }&lt;br /&gt;
    return raw;&lt;br /&gt;
  }&lt;br /&gt;
  public static byte[] hexToBytes(String hex) {&lt;br /&gt;
    return hexToBytes(hex.toCharArray());&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Simple Servlet Example using the getRemoteUser() method. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.servlet.ServletException;&lt;br /&gt;
import javax.servlet.http.HttpServlet;&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpServletResponse;&lt;br /&gt;
public class MainClass extends HttpServlet {&lt;br /&gt;
  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,&lt;br /&gt;
      java.io.IOException {&lt;br /&gt;
    res.setContentType(&amp;quot;text/html&amp;quot;);&lt;br /&gt;
    java.io.PrintWriter out = res.getWriter();&lt;br /&gt;
    out.println(&amp;quot;&amp;lt;HTML&amp;gt;&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;User Example&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;&amp;lt;BODY&amp;gt;&amp;quot;);&lt;br /&gt;
    String username = req.getRemoteUser();&lt;br /&gt;
    if (username == null) {&lt;br /&gt;
      out.println(&amp;quot;Hello. You are not logged in.&amp;quot;);&lt;br /&gt;
    } else if (&amp;quot;Bob&amp;quot;.equals(username)) {&lt;br /&gt;
      out.println(&amp;quot;Hello, Bob. Nice to see you again.&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      out.println(&amp;quot;Hello, &amp;quot; + username + &amp;quot;.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    out.println(&amp;quot;&amp;lt;/BODY&amp;gt;&amp;quot;);&lt;br /&gt;
    out.println(&amp;quot;&amp;lt;/HTML&amp;gt;&amp;quot;);&lt;br /&gt;
    out.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>