|
|
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как должен выглядеть (лучше кодом) фильтр, который проверяет наличие сессии. То есть есть LoginServlet: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. LoginServlet при удачном логине передает RootControllerServlet сессию. RootControllerServlet: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Реализована модель MVC, нужно чтобы фильтр при попытке вызвать из RootControllerServlet какую-нить jsp (например, showUserAccounts.jsp) проверял наличие сессии, что бы нельзя было обойти процесс логона и просто в браузере набрать http://localhost:8080/app1/jsp/showUserAccounts.jsp Заранее всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 09:33 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. это в doFilter(). фильтр мапится на тот же урл, что и контроллер. пишите названия страниц, методов с маленькой буквы - потом проще будет. в catch пишите e.printStackTrace(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 11:11 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Deady спасибо за помощь, но вроде что то не так, у меня получился фильтр SessionFilter: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Код: plaintext Код: plaintext кусочек из web.xml: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 13:43 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
HttpSession session = (HttpSession) request.getSession(true); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 13:50 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
((HttpServletResponse) response).sendRedirect(loginUrl); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 13:51 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
и - не лучше ли классы в пакеты класть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 13:52 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
HttpSession session = (HttpSession) request.getSession(true); Не помогает.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 13:57 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Господа, неужели никто не знает, как написать этот несчастный фильтр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 15:43 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
а что еще не так-то? вроде все уже подсказали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 16:03 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
см. выше, ошибочки есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 16:28 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
fidelHttpSession session = (HttpSession) request.getSession(true); Не помогает.... в чем не помогает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 16:40 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Идея подсвечивает Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 16:58 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
fidelИдея подсвечивает Код: plaintext Код: plaintext сказали же, что request из параметров метода надо привести к типу HttpServletRequest: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 17:02 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Deady, спасибо за помощь, но че то я не догоняю, сделал как Вы сказали, а он не работает. SessionFilter: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. P.S. Простите за надоедливость и пытливость, прошерстил много форумов, но подобную тему так и не встретил. Ну что же здесь не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 11:02 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
а кто на null проверять будет session.getAttribute("loggedIn") ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 11:22 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Спасибо за подсказку, добавил обработку NullPointerException тока так и не работает этот фильтр...уж сто раз теорию перечитал, вот не могу втыкнуть и все! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 12:06 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. добавьте else как в примере выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 10:45 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Опять не работает! Хорошо я пошел уже по более простому пути урезал все листинги итак: LoginServlet: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. RootControllerServlet: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. SessionFilter: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 12:29 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
напиши getSession() вместо getSession(true) и учи debug! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 14:20 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
а что такое debug? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 14:51 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
2 fidel в последнем листинге фильтра - не надо кетчить NullPointerException, по крайней мере не так, как у вас - так точно работать не буде. надо либо проверять на null, либо сделать проще: Код: plaintext 1. Dmitriy O "Итак вред от арабов (черных мусульман) - Присутсвовали в татаро-монгольском иге" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 15:04 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
зачем вам такая конструкция в принципе? я не понимаю суть сервлета RootControllerServlet. вы хотите FrameWork создать? не проще ли взять готовый? делайте так: каталог / - форма аутентификации (login.jsp) - общие файлы, которые мжно смотреть всем (типа /index.jsp итп) каталог /private - защищенные страницы - страница success.jsp - на нее попадет пользователь в случае успешной аутентификации сервлет LoginServlet. маппим его на /login.do фильтр PrivateFilter. маппим его на /private/* пишем на бумажке: "сервлет делает действие" (в частности, обработка формы) и вешаем на монитор. в login.jsp в форме пишем Код: plaintext 1. 2. 3. 4. далее в LoginServlet пишем (в методе doGet или doPost - неважно, зависит от того, что указано в атрибуте method тега form): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. видим, что сервлет при успешной аутентификации положит в сессию объект User. соответственно по этому атрибуту мы и узнаем, аутентифицирован он или нет в фильтре (помним, что фильтр замапен на /private/*): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. вот и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 15:17 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
2 Deady: Смысл в том, что перед мной стоит задача написать веб-приложение, в котором необходимо логиниться. Есть три типа доступа: root, power_user, user - соответственно я хотел зделать так: залогинился root - идет пернаправление на RootControllerServlet (роль этого сервлета - сервлет контроля MVC), залогинился power-user идет перенаправление на PowerUserControllerServlet соответственно он тоже выполняет роль сервлета MVC. Но шас я понимаю что эта модель - не гибкая и мертвая. В идеале бы хотелось написать более гибкое приложение с одним MVC, но дальше двигаться не могу, так как не решен вопрос с проверкой сессии P.S. может у меня окончательно кривые руки, но Ваш последний пример не рабочий - че то с вервлетом нето Может новую тему начать, как грамотно проектировать приложения, ИМХО - это 75% успеха, если не больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2006, 10:37 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
fidleно Ваш последний пример не рабочий - че то с вервлетом нето что именно? давайте разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2006, 10:38 |
|
||
|
Нужна помощь по фильтру...
|
|||
|---|---|---|---|
|
#18+
Вот еще что вспомнил, мы отходим от реализации MVC, хотелось бы конечно, что бы при удачном логине управление передавалось сервлету, а не jsp, мне кажеться лучше чтобы все таки сервлет управлял. Наверно все таки надо вернуться к старой модели. По поводу вашего примера, я немного упростил сервлет, но все равно не работает, пока даже без фильтра: login.jsp: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. LoginServlet: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. web.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping> </web-app> и мой любимый котик 5.5.15 мне выдает: HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to load class for JSP org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause org.apache.jasper.JasperException: Unable to load class for JSP org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:598) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:147) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:315) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause java.lang.ClassNotFoundException: org.apache.jsp.login_jsp java.net.URLClassLoader$1.run(URLClassLoader.java:200) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(URLClassLoader.java:188) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:133) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:65) org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:596) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:147) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:315) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.5.15 logs. я так понял он не может login.jsp - компильнуть в сервлет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2006, 12:21 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33954690&tid=2148229]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
206ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 578ms |

| 0 / 0 |
