日期:2014-05-17  浏览次数:20720 次

怎样实现多个目标jsp共用一个servlet
比方说现在有a.jsp,b.jsp,c.jsp三个页面,三个页面都拒绝不登陆的访问,一个servlet是检查浏览器是否有cookie看用户登没登陆的,怎样实现在指向a、b、c的跳转或超链接前,都先访问servlet,然后再分别定向到a.jsp、b.jsp、c.jsp
------解决方案--------------------
配置拦截器啊。。
------解决方案--------------------
直接在三个页面的开头调用此servlet的相关检查方法
------解决方案--------------------
配置filter过滤器
<filter>
    <filter-name> servlet</filter-name>
    <filter-class>servlet全路径 </filter-class>  
 </filter>
  
filter-mapping>  
    <filter-name>servlet</filter-name>  
    <url-pattern>*.jsp</url-pattern>  
</filter-mapping> 
------解决方案--------------------
这正是 过滤器 的工作
------解决方案--------------------
引用:
Quote: 引用:

这个好办啊,请求的地址

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletExceptionIOException {
this.doPost(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String resPath = request.getParameter("resPath");
if("a".equals(resPath)){
request.getRequestDispatcher("/a.jsp").forward(request, response);
}else if("b".equals(resPath)){
request.getRequestDispatcher("/b.jsp").forward(request, response);
}else if("c".equals(resPath)){
request.getRequestDispatcher("/c.jsp").forward(request, response);
}
}

这样能行吗?
String resPath = request.getParameter("resPath");
这句话是获取表单用的吧,能用来获取请求的地址?

不一定要表单的,直接在URL后面加参数也可以的,像这样:/loginServlet?param=a
------解决方案--------------------
把它变成一个转发servlet就行啦
这个是在几乎所有框架中通用的做法dispatch servlet
------解决方案--------------------
强烈建议用拦截器,这样拦截的就不仅仅是这三个页面了,以后需要拦截的页面也可以被拦截到
------解决方案--------------------
用拦截器好了 。 action 下面配置好你的拦截类。 拦截类里面判断。
------解决方案--------------------
楼主应该配置一个登录filter

做像下面这样的判断

String username = request.getParameter("username");
String password = request.getParameter("password");
Map<String, String> messages = new HashMap<String, String>();

if (username == null 
------解决方案--------------------
 username.isEmpty()) {
    messages.put("username", "Please enter username");
}

if (password == null 
------解决方案--------------------