I'm having difficulties in my web app, I post codes and define what im doing in code parts...
This is my Filter which checks user type(admin, manager, user).. And im getting error here at line which marked...
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
RequestDispatcher rd=null;
Person user = (Person) session.getAttribute("usertype"); <------ **IM GETTING EXCEPTION HERE!**
if (user != null && user.getType().equals(UserType.MANAGER.toString())) {
String nextJSP = "/ManagerHome.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
else if (user != null && user.getType().equals(UserType.ADMIN.toString())) {
String nextJSP = "/AdminHome.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
else if (user != null && user.getType().equals(UserType.USER.toString())) {
String nextJSP = "/UserHome.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
else {
String nextJSP = "/Login.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
chain.doFilter(request, response);
}
And This is my Person class which has records of person
@Table(name="\"Person\"")
public class Person implements Serializable {
/**
*
*/
private static final long serialVersionUID = 2532993385565282772L;
@Id
@Column(name="id",nullable=false,updatable=false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String username;
private String name;
private String surname;
private String sskno;
private String address;
private String telno;
private String type;
@OneToMany
private List<Leave> leaves;
public Person() {
}
getters & setters....
And This is my LoginServlet... Here at temporarily Pusername,Pname,Pusertype and Pusername are for setting attribute on session. And according to this pages which are JSP's are directed depends to usertype...(if user go userhome, if manager manager home and go on)... I know why im getting this error but I don't know hot avoid it. I did research and nothing worked for me... Please help me here is my Loginservlet
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginServlet() {
super();
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
String pName;
String pSurname;
String pUserName;
String pUserType;
String query;
String home="/Login.jsp";
String username = request.getParameter("username");
String password = request.getParameter("password");
RequestDispatcher rd = request.getRequestDispatcher(home);
mysqlCon con = new mysqlCon();
//HttpSession session = request.getSession();
LoginService ls = new LoginService();
Statement stmt = con.getConnection().createStatement();
query = "SELECT name, surname, usertype, username FROM employee WHERE username='"
+ username + "' AND password='" + password + "';";
stmt.executeQuery(query);
ResultSet rs = stmt.getResultSet();
if(rs.next()){
pName = rs.getString(1);
pSurname = rs.getString(2);
pUserType = rs.getString(3);
pUserName = rs.getString(4);
if (ls.loginCheck(username, password) != false) {
Person tmp = new Person();
tmp.setName(pName);
tmp.setSurname(pSurname);
tmp.setType(pUserType);
tmp.setUsername(pUserName);
HttpSession session = request.getSession();
session.setAttribute("name", tmp.getName());
session.setAttribute("surname", tmp.getSurname());
session.setAttribute("usertype", tmp.getType());
session.setAttribute("username", tmp.getUsername());
if (pUserType.equals(UserType.MANAGER.toString())) {
String nextJSP = "home/ManagerHome.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
else if (pUserType.equals(UserType.ADMIN.toString())) {
String nextJSP = "home/AdminHome.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
else if (pUserType.equals(UserType.USER.toString())) {
String nextJSP = "home/UserHome.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
else {
String nextJSP = "/Login.jsp";
rd = request.getRequestDispatcher(nextJSP);
rd.forward(request, response);
}
}
}
else {
rd.forward(request, response);
}
IF you want me to add more information i can do it. My question is that how can i avoid this and make this work.