登录后访问每个页面 [英] Access to every page after loging
问题描述
嘿朋友,
我正在使用JAVA,OOP和DAO技术进行项目。在我的项目中,用户可以在登录后访问页面。作为一个例子,我有一个登录后可以看到的菜单页面。想想是否有人试图在没有登录的情况下访问此页面。然后它应该进入登录页面,并显示错误消息。我有15个jsps和10个servlets.Inside那些有很多属性。不能在每个页面中编写相同的东西。所以我的问题是如何使用DAO或OOP技术轻松完成?
这是我的UserServlet.java代码
Hey Friends,
I'm doing a project using JAVA,OOP and DAO techniques. In my project users can access pages after login. as an example i have a menu page which can see after login. think if some one trying to go to this page without login. then it should go to the login page with an error message.think I have 15 jsps and 10 servlets.Inside those there are so many attributes. cannot code same thing in every page.so my question is how to do that easily using DAO or OOP techniques?
Here is my UserServlet.java code
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String operation = request.getParameter("operation");
if(operation!=null && operation.equalsIgnoreCase("displayMenu")){
displayHomePage(request,response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String operation = request.getParameter("operation");
if(operation!=null && operation.equalsIgnoreCase("login")){
loginDetail(request,response);
}else if(operation!=null && operation.equalsIgnoreCase("logout")){
logoutSession(request,response);
}
}
private void loginDetail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
User u = new User();
UserService us =new UserServiceImpl() ;
String Uname = request.getParameter("txtUname");
String Pwrd = request.getParameter("txtPwrd");
u.setUname(Uname);
u.setPwrd(Pwrd);
System.out.println(Uname+""+Pwrd);
try {
if(us.Userlogin(u.getUname(),u.getPwrd())){
String message = "Thank you, " + Uname +"..You are now logged into the system";
request.setAttribute("message", message);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/menu.jsp");
rd.forward(request, response);
HttpSession session = request.getSession(true);
session.setAttribute("loggedUser", u);
String reqUrl = (String)session.getAttribute("requestedURL");
session.removeAttribute("requestedURL");
response.sendRedirect(reqUrl);
}else {
String message = "You have to register first or check Your user name password again!";
request.setAttribute("loginMsg", message);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/login2.jsp");
rd.forward(request, response);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void logoutSession(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
HttpSession session = request.getSession();
session.invalidate();
try{
String message = "Logout!";
session.removeAttribute("loggedUser");
session.invalidate();
request.setAttribute("loginMsg", message);
response.sendRedirect(request.getContextPath() + "/login2.jsp");
}catch(Exception e){
e.printStackTrace();
}
}
private void displayHomePage(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
HttpSession session = request.getSession(true);
String nextPage = "/login2.jsp";
if(session!=null){
User user = (User)session.getAttribute("loggedUser");
if(user!=null){
nextPage = "menu.jsp";
}else{
request.setAttribute("errorMsg","Please Login...!");
session.setAttribute("requestedURL", "login?operation=displayMenu");
}
}
//response.sendRedirect(nextPage);
request.getRequestDispatcher(nextPage).forward(request, response);
//response.sendRedirect(request.getContextPath() + "/Login.jsp");
}
}
home.jsp //项目的索引页面>
home.jsp// index page of the project
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>Welcome to DemoBank</p>
<p><a href="login?operation=displayMenu">Go to home page</a></p>
</body>
</html>
home.jsp(项目的索引页) - >登录。 jsp->其他页面(如果登录成功)
如果有人转到其他页面,它应该指向login.jsp->然后它指向以上是成功路径
home.jsp(index page of the project)->login.jsp->other pages(if login success)
if someone go to other pages it should directs to login.jsp->then it directs to above successfull path
推荐答案
这是我的FilterRequest.java文件代码
Here is my FilterRequest.java file code
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
try{
//HttpServletResponse responce = (HttpServletResponse) resp;
//HttpServletRequest request = (HttpServletRequest) req;
//String servletPath = request.getServletPath();
HttpSession session = ((HttpServletRequest) req).getSession();
User u = (User) session.getAttribute("loggedUser");
System.out.println(u);
if (u!= null)
{
chain.doFilter(req, resp);
return;
}
/*if (servletPath.equals("/login2.jsp"))
{
chain.doFilter(req, resp);
return;
}*/else{
String message = "Please Login!";
req.setAttribute("loginMsg", message);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/login2.jsp");
rd.forward(req, resp);
}
}catch(Exception e){
e.printStackTrace();
}
}
这是我的web.xml映射代码..
This is my web.xml Mapping code..
<filter>
<filter-name>FilterRequest</filter-name>
<filter-class>com.mobitel.bankdemo.web</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterRequest</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
当我从头开始运行项目时,它说
when I run the project from the beginning it says "
The requested resource is not available.
哪里出错了?请指导我
"
Where i went wrong? please guide me
这篇关于登录后访问每个页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!