请教一下Jfinal拦截器中页面跳转
@Jfinal 您好,最近在尝试使用Jfinal写一个小demo试试手,Jfinal用起来好赞的!感谢!
然而在实现登录验证功能时,我想这样:对登录进行密码校验之后用getSession().setAttribute("isLogin","lalala");存,跳转到展示数据的主页redirect("/main");。
假如用户直接访问/main,我会在其处理的action所绑的第一个拦截器LoginIntercept进行验证“isLogin”的正确性的操作,若null或不是"lalala",则inv.getController().render("login.jsp")、或者inv.getController().redirect("/login"),然而发现都不能跳转到想要的页面,提示:
HTTP ERROR 404
Problem accessing /index.jsp. Reason:
Not Found
以及:
八月 10, 2015 9:58:29 下午 org.apache.jasper.servlet.JspServlet serviceJspFile严重: PWC6117: File "E%3A%5Cworkspace%5Cgreport_car_test%5CWebRoot%5Cindex.jsp" not found
附上相关代码片段:
配置路由:
public void configRoute(Routes me) { me.add("/", LoginController.class); // 第三个参数为该Controller的视图存放路径,缺省与第一个参数相同 me.add("/main",OnlineController.class,"/"); }
public class LoginController extends Controller { public void index() { render("login.jsp"); } @Before(LoginValidator.class) public void login(){ getSession().setAttribute("isLogin","lalala"); redirect("/main"); } }
这里想交给LoginIntercept校验是否已登录
public class OnlineController extends Controller { @Before({LoginIntercept.class,FileExistIntercept.class}) public void index() { //乱七八糟的代码略 render("main.jsp"); }
然而并不行
public class LoginIntercept implements Interceptor { public void intercept(Invocation inv) { Controller ctl = inv.getController(); String isLogin = (String) ctl.getSession().getAttribute("isLogin"); if(isLogin == null || !isLogin.equals("lalala")){ System.out.println("wtf!"); ctl.render("login.jsp"); } } }
请问是哪里设计有问题还是?
难道是缺了inv.invoke();。。。我去试试。。。
加了else{inv.invoke();}后这层是可以了
但是第二个拦截器那里又有问题了,里面有
String pathname = PathKit.getWebRootPath() + File.separator + "online_history" + File.separator + date + File.separator + hour + ".html"; File file = new File(pathname); if (file.exists()) {//本地有文件时 try { inv.getController().renderHtml(FileUtils.readFileToString(file)); } catch (IOException e) { System.out.println("读取缓存网页数据失败"); e.printStackTrace(); } } else if(ifGetNewData){//本地没文件则去实时取 inv.invoke(); }else{ inv.getController().renderText("并没有此天的历史记录"); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以不需要 nginx 就可以,只不过需要通过多域名映身到多个项目
@JFinal 额,,其实我问的就是只有IP没多域名,同个tomcat咋办。。算了不行我就用tomcat或者嵌入一下完整的jetty试试吧。感谢前辈提供Jfinal这么好的框架,辛苦了