gpt4 book ai didi

java - Servlet + Java 的 HttpSession 不起作用

转载 作者:行者123 更新时间:2023-12-02 05:21:07 25 4
gpt4 key购买 nike

我有以下代码“anmelden.java”:

@WebServlet("/anmelden")
public class anmelden extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String benutzer = request.getParameter("benutzer");
String passwort = request.getParameter("passwort");

try {
PrintWriter out = response.getWriter();
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test","admin","*****");
PreparedStatement stmt = con.prepareStatement("SELECT benutzer,passwort,rolle FROM login WHERE benutzer = ? AND passwort = ?");
stmt.setString(1, benutzer);
stmt.setString(2, passwort);
ResultSet rs = stmt.executeQuery();


if(rs.next())
{

HttpSession session = request.getSession();
session.setAttribute("benutzer", rs.getString("benutzer"));
RequestDispatcher dis = request.getRequestDispatcher("mandant.jsp");
dis.forward(request, response);

out.print("1");

}
else
{
out.print("Benutzername und/oder Passwort falsch");
}

} catch (Exception e) {
e.printStackTrace();
}
}
}

这是我的 jsp 文件“login.jsp”:

        $("#anmelden").click(function(){

var benutzer = $("#benutzer").val();
var passwort = $("#passwort").val();

if(benutzer == "" || passwort == "")
{
return;
}
$.ajax({
url:"anmelden",
type:"POST",
data:"benutzer="+benutzer+"&passwort="+passwort
}).success(function(data){
var erfolg = data;
if(erfolg == "1")
{
window.location.href="http://localhost:8080/PSD/mandant.jsp";
}
else
{
$("#ok").text(erfolg);
}
});
});

正如你所看到的,我尝试将来 self 的数据库的名称设置到我的 session 属性中。我想在“mandant.jsp”文件中使用该属性。但它不起作用 - 所有发生的事情是,我的“login.jsp”文件进行ajax调用,将代码从“mandant.jsp”打印到我的div 作为文本。所以它没有按照我想要的方式打开下一页 -.-

但是,如果我注释掉 HttpSession block ,那么它工作正常,但我当然不能使用 session 属性。

那么出了什么问题或者我必须更改什么才能使该代码正常工作?

非常感谢

最佳答案

这是因为这部分代码:

RequestDispatcher dis = request.getRequestDispatcher("mandant.jsp");
dis.forward(request, response);

使用请求对象(以及 HttpSessionServletContext)从 mandant.jsp 文件生成 HTML,以实现任何表达式语言,并将此 HTML 写入响应中。只要删除这些行就可以了。

关于java - Servlet + Java 的 HttpSession 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26510656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com