我在JSP中创建了一个登录脚本。它工作正常,但我使用的问题
<%=session.getAttribute("first_name")%>
它显示Null
。你能告诉我这里有什么问题吗?
Main.jsp
:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
if ((session.getAttribute("user_email") == null) || (session.getAttribute("user_email") == "")) {
response.sendRedirect("login.jsp");
%>
<%} else
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome to the job seeker forum.</title>
<link rel="stylesheet" type="text/css" href="CSS_styles/forum_style.css"/>
<link rel='stylesheet' id='open-sans-css' href='//fonts.googleapis.com/css?family=Open+Sans%3A300italic%2C400italic%2C600italic%2C300%2C400%2C600&subset=latin%2Clatin-ext&ver=4.1-alpha-20141011' type='text/css' media='all' />
<link href='http://fonts.googleapis.com/css?family=Londrina+Solid|Exo:800|Open+Sans:300italic,400,300,600|Roboto:400,100,300,500,700' rel='stylesheet' type='text/css' />
</head>
<body>
<div id="forum">
<h1><b>Welcome <%=session.getAttribute("first_name")%></b>,<br>to Job seeker forum, there are many openings that you can get through here. <a href='logout.jsp'>logout</a></h1>
<form id="forum_form" method="post">
</form>
</div><br><br><br>
<div id="forum2">
<h1 style="text-align: center;">Want to post on going walking,<br>Post your job description here.</h1>
<form id="forum2_form" method="post">
<p>
<label>Job title:</label>
<input type="text" class="" placeholder="e.g XXX Referral program for freshers."/>
</p>
<p>
<label>Your Question:</label>
<textarea class="question_ask_style" rows="3" cols="40" placeholder="Type description here.."></textarea>
</p>
<div id="submit_btn">
<input type="submit" value="Submit Question" />
</div>
</form>
</div>
</body>
</html>
以下是login_process.jsp
<%@ page import="java.sql.*" %>
<%
String user_email=request.getParameter("user_email");
String user_password=request.getParameter("user_password");
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:8888/login", "root", "1234");
Statement st=con.createStatement();
ResultSet rs;
rs=st.executeQuery("select * from members where email='"+user_email+"' and password='"+user_password+"'");
if(rs.next()){
session.setAttribute("user_email", user_email);
response.sendRedirect("main.jsp");
}else{
out.println("Invalid Password... Try again.. <a href='login.jsp'>login</a>");
}
%>
这是我创建的database table
:
create table `members`(
`id` int(10) unsigned NOT NULL auto_increment,
`email` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE= InnoDB default charset=latin1;
这就是我收到错误......
SCREENSHOT : http://i.stack.imgur.com/AuF5M.png
答案 0 :(得分:1)
<%=session.getAttribute("first_name")%>
显示null
,因为您尚未在会话中设置first_name
。
您只设置了user_email
。
if(rs.next()){
String user_email=rs.getString("first_name");
session.setAttribute("user_email", user_email);
response.sendRedirect("main.jsp");
你可以像上面那样设置
P.S
几十年来不鼓励使用Scriptlet,因此建议使用EL代替它们。你可以简单地使用${sessionScope.user_email}
在jsp页面中打印出来
答案 1 :(得分:0)
在login_process.jsp
中使用<%=session.setAttribute("first_name",first_name)%>
然后访问它。
例如:
rs=st.executeQuery("select * from members where email='"+user_email+"' and password='"+user_password+"'");
if(rs.next()){
session.setAttribute("first_name", rs.getString("first_name"));//set first_name in session
session.setAttribute("user_email", user_email);
response.sendRedirect("main.jsp");
}
答案 2 :(得分:0)
试试这个
if(rs.next()){
session.setAttribute("user_email", user_email);
session.setAttribute("first_name", rs.getString(4));//Add this line to your code
response.sendRedirect("main.jsp");
}
这里4是first_name的列号
答案 3 :(得分:0)
在login_process.jsp中设置
session.setAttribute("user_email", user_email);
到
session.setAttribute("first_name", rs.getString("first_name"));
因为您已设置属性名称user_email并从会话中获取first_name。