0

ログイン画面を提供するjspファイルがあります。フォームを送信すると、コントロールはサーブレットに移動する必要があります。さて、フォームの値をモデル (Bean クラス) に保存し、コントローラーで使用するにはどうすればよいですか? ストラット、スプリングなどのフレームワークは使用していません。

次のコードを使用しましたが、エラーが発生しました

java.lang.NoClassDefFoundError: bean/LoginBean

私のコードは次のとおりです。

index.jsp:

     <form name="signin" method="post" action="LoginServlet">
                 <table>
                     <tr><td><font>USERNAME</font></td><td><input type="text" name="signin_uname" /></td></tr>
                     <tr><td><font>PASSWORD</font></td><td><input type="password" name="signin_pwd" /></td></tr>
                     <tr><td><input type="reset" value="RESET" /></td><td><input type="submit" value="LOGIN" /></td></tr>
                 </table>
            </form>

LoginServlet.java

   @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
  processRequest(request, response);
    HttpSession session=request.getSession();
    System.out.println(session);
    try {
        LoginBean login=new LoginBean();
        login.setSignin_pwd("raviteja");
        login.setSignin_uname("raviteja");
        System.out.println(login.getSignin_uname());
        System.out.println(login.getSignin_pwd());
    } finally {

    }
    response.sendRedirect("");
}

LoginBean.java

public class LoginBean implements Serializable {
String signin_uname,signin_pwd;
public LoginBean() {

}

public String getSignin_pwd() {
    return signin_pwd;
}

public void setSignin_pwd(String signin_pwd) {
    this.signin_pwd = signin_pwd;
}

public String getSignin_uname() {
    return signin_uname;
}

public void setSignin_uname(String signin_uname) {
    this.signin_uname = signin_uname;
}

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
  <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>servlets.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

4

2 に答える 2

1

1 Spring ライブラリをプロジェクトに追加し、web.xml で DispatherServlet をマップして /LoginServlet を処理します

2 Bean を作成します (フォーム フィールドと Bean フィールドに同じ名前を付けます)。

public class LoginData {
    private String signin_uname;
    private String signin_pwd;

    // Getters and setters
}

3 コントローラーを作成します。

@Controller
public class LoginController {

    @RequestMapping(value = "/LoginServlet", method = RequestMethod.POST)
    public String postLoginData(@ModelAttribute LoginData loginData) {

        // All data from form will be at your model attribute bean. It will also will 
        // be putted at request
        String userName = logigData.getSignin_uname();

        return "loginResult.jsp";
    }
}
于 2012-05-31T06:13:24.723 に答える
0

コードが正しく実行されるはずです。クラスパスに問題があります。JVM はLoginBean実行時にクラスを見つけることができません。

ところで、コンソールに何を出力したいですか?入力したデータ ユーザーを印刷する場合は、次のようにコードを修正します。

LoginBean login = new LoginBean(); 
String username = request.getParameter("signin_uname");
String password = request.getParameter("signin_pwd");
login.setSignin_uname(username);
login.setSignin_pwd(password); 

ただし、コードを使用してプロジェクトを正しく作成していれば、エラーになることはありません。

于 2012-05-31T07:33:44.840 に答える