0

私はこの小さなJavaプロジェクトを持っており、そこではjspファイルを使用する必要があります。
次の機能をトリガーするログインボタンのあるHTMLがあります。

var loginCall = "user/login";
var logoutCall = "user/logout";
var signupCall = "user/signup";

function login() {
var login = baseUrl + loginCall + "?";

var loginFormElements = document.forms.loginForm.elements;

login = addParam(login, USER_NAME, loginFormElements.userName.value, false);
login = addParam(login, PASSWORD, loginFormElements.password.value, true);

simpleHttpRequest(login, function(responseText){

    var status = evalJSON(responseText);

    if (status.errorCode == 200) {
        var res = status.results;
        var sessionId = res[0].sessionId;
        setCookie(SESSION_ID,sessionId);
        window.location="http://localhost:8080/"+baseUrl+"/main.html";
    } else {
        showError(status.errorCode, "Username or password was incorrect.")
    }

}, function(status, statusText){console.log('z');    
    showError(status, statusText);
});
}

私が見る限り、httpRequestが作成され、データとともにbaseUrl + loginCallに送信されます。これは、localhost / something / user / login?name = somename&pass=somepassを意味します。

これは私が立ち往生しているところです、私はどこかにJavaファイルを作成する必要がありますか?それはリクエスト情報を受け取り、データベースでそれを処理し、答えを返しますか?
もしそうなら、どこで、どのように?login / user.javaという名前を付ける必要がありますか?

コード例や次にやらなければならないことの説明を教えてくれないのなら、誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

1

JSP MVC をもう一度確認する必要があります。jsp ページには、html と javascript と Java コードが含まれている必要があります。別の .java クラスを呼び出したい場合は、そのクラスをサーブレットとして記述してから呼び出す必要があります。

したがって、.jsp には、そこにあるのと同じように html と javascript があり、これらの括弧内に含まれるすべての Java <% %>

こちらのチュートリアルをご覧ください http://www.jsptut.com/

そして、私はあなたがログインページをやっているのを見ます。この素晴らしいチュートリアルを使用してログイン システムを作成し、jsp とサーブレットがどのように機能するかを理解するのに役立ちました。 http://met.guc.edu.eg/OnlineTutorials/JSP%20-%20Servlets/Full%20Login%20Example.aspx

概念を理解するのに役立つこの画像もチェックしてください。サーブレットは純粋な Java クラスであり、ほとんどの Java に使用されますが、html も出力できます。jsp はほとんどの html (および javascript) に使用されますが、jsp を含めることができます。したがって、サーブレットが作業を行い、jsp が計算された値を取得して、JavaScript で使用できるようにします。とにかくそれが私の考えです。間違っているかもしれません http://met.guc.edu.eg/OnlineTutorials/static/article_media/jsp%20-%20servlets/LoginExample%20[4].jpg

ではごきげんよう

于 2013-01-24T13:02:02.493 に答える
0

MVC フレームワークを使用していない場合は、HttpServletリクエストを処理するためのクラスを拡張し、ビジネス ロジックの処理、データベースへのアクセス/更新などのすべての重い作業を実行してから.jsp、プレゼンテーション用のファイルにリクエストをディスパッチすることをお勧めします.jsp。 「.jsp」ページでアクセスしたいリクエストスコープにカスタムオブジェクトを追加することもできます+式言語を使用すると、ほとんどのリクエスト関連の暗黙的なオブジェクトにアクセスできます

流れの典型例を簡単に挙げてみました。

投稿されたフォームを処理する Java サーブレット クラスを次に示します。

public class doLogin extends HttpServlet{

    @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException {

    String username= request.getParameter("username"); // get username/pasword from form
    String password = request.getParameter("password");

       // This is your imaginary method for checking user authentication from database
    if(checkUserAuthentication(username,password)){
     /* 
      user is authenticated.Now fetch data for user to be shown on homepage
      User is another class that holds user info. Initialize it with data received from database
     */
      user userData = new User;
      user.setName(...);
      user.setAge(...);
      user.setInfo(...); 
      // etc
    }
    RequestDispatcher view = req.getRequestDispatcher("login.jsp");             

    req.setAttribute("userdata", userData); // set user object in current request scope

    view.forward(req, resp);//forward to login.jsp          

}

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException {       


}

ただし、上記で呼び出すアクションを含むフォームが必要ですServletClass

<form action="/checkLogin" method="POST">
  <input type="text" name="username" value="">
  <input type="password" name="password" value="">
  <input type="submit" name="login" value="Login">
</form>

doLoginフォームログインボタンのクリックでクラスを呼び出すようにサーブレットコンテナーに指示するに web.xmlは、Java の標準の動的 Web アプリケーションの一部であるデプロイメント記述子ファイルで構成する必要があります。

doLogin`web.xml' following xml snippet make apllication server aware ofクラス内

<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.yourdomain.doLogin</servlet-class>
</servlet>

ただし、まだどの URL にもマップされていません。以下の<servlet-mapping>セクションのように構成されています。web.xml

<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/checkLogin</url-pattern>
</servlet-mapping>

これで、URL へのポスト リクエストはクラスのメソッドを/checkLogin呼び出します。ログイン リクエストが成功すると、「login.jsp」ページに転送されます。doPostdoLogin

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

sciptlet<% %>構文で Java コードを使用して、userDataオブジェクト <% User data = (User)request.getAttribute('userData');にアクセスできます。%>

より適切で整然としたアプローチは、表現言語を使用することです

${ pageContext.request.userData.name } 

上記の式は、Java Bean命名規則を使用して User クラスのオブジェクトで getName() メソッドを呼び出します

ここで、式言語についてさらに学ぶことができます。しばらくしてから、これを改善し、より多くの洞察を提供できます。お役に立てば幸いです :)

于 2013-01-24T14:01:54.883 に答える