失礼しました。
formを使わず、HTMLからサーブレットを
呼び出したく<applet>タグを使いたいのですが、
サーブレットが呼び出されません。
どのようにしたら呼び出されるのでしょうか。
《詳細》~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
クラス格納パス
WEB-INF … classes
・
…pkg
・
…AuthenticationCheck.class
Question.class
QuestionBean.class
《一番最初に使用されるHTMLファイルの内容》~~~~~
<html>
<head><title>ログイン画面</title></head>
<body>
<applet code="AuthenticationCheck.class"
codebase="http://localhost:8080/db_v2.00/pkg/"
archive="test.jar" width=200 height=100>
<param name="speed" value="10">
<param name="top" value="100px">
<param name="title" value="Koji Sugiura's
Applet!">
<p width=200>あなたの現在のブラウザでは、
Java が無効になっているか、
APPLET タグを認識しないブラウザではないで
しょうか。
残念ながらアプレットを実行できません。</p>
</applet>
</body>
</html>
《認証プログラム》~~~~~~~~~~~~~~~~~~~~~~~~~~
package pkg;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import sun.misc.BASE64Decoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class AuthenticationCheck extends HttpServlet{
private static final long serialVersionUID = 1;
private String authority;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{
String authorization=request.getHeader("Authorization");
if(authorization == null){
askForPassword(response);
}else{
String userInfo=authorization.substring(6).trim();
BASE64Decoder decoder = new BASE64Decoder();
String nameAndPassword =
new String(decoder.decodeBuffer(userInfo));
int index=nameAndPassword.indexOf(":");
String user=nameAndPassword.substring(0,index);
String password=nameAndPassword.substring(index+1);
if(CheckPassword(user,password)){
doPost(request, response);
}else{
askForPassword(response);
}
}
}
private void askForPassword(HttpServletResponse response){
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate",
"BASIC realm=\"Insider-Trading\"");
}
private boolean CheckPassword(String s1, String s2){
boolean result = false;
String pass = "";
String id = "";
try {
String url = "jdbc:mysql://localhost:3306/UserTable"
+ "?useUnicode=true&characterEncoding=utf8";
String user = "root";
String password = "root";
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, user, password);
Statement stmt = con.createStatement();
String query = "SELECT * FROM USERTABLE WHERE PASSWORD = '" + s1 + "';";
ResultSet rs = stmt.executeQuery(query);
pass = rs.getString("PASSWORD");
id = rs.getString("ID");
authority = rs.getString("AUTHORITY");
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
if(id.equals(s1)){
if(pass.equals(s2)){
result = true;
}else{
result = false;
}
}else{
result = false;
}
return result;
}
protected void doPost(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException{
res.sendRedirect("http://localhost:8080/db_v2.00/view/input.html");
}
}