Avatar billede axe2 Nybegynder
29. april 2003 - 14:18 Der er 22 kommentarer og
1 løsning

disp = getServletContext().getRequestDispatcher("/login.jsp");

koder fra en servlet
disp = getServletContext().getRequestDispatcher("/login.jsp");

adresse linien i ie bliver ikke opdateret istedet står Servlet navnet i ie adresse feltet, hvordan kan jeg få opdateret adresse linien ordenligt med login.jsp
Avatar billede =maddog= Nybegynder
29. april 2003 - 14:20 #1
response.redirect(URL)
Avatar billede axe2 Nybegynder
29. april 2003 - 14:26 #2
ok, det ser jo noget nemmere ud
Avatar billede =maddog= Nybegynder
29. april 2003 - 14:28 #3
jeps. du bruger din ServletResponse til at redirecte. RequestDispatcher'en opfatter det som samme side, der blot bliver bearbejdet af en anden resource.
Avatar billede axe2 Nybegynder
29. april 2003 - 14:29 #4
det kan ikke lade sig gøre i min servlet
Avatar billede axe2 Nybegynder
29. april 2003 - 14:36 #5
hvordan får jeg fat i min ServletResponse
Avatar billede =maddog= Nybegynder
29. april 2003 - 14:37 #6
res.sendRedirect(url) for pokker
Avatar billede =maddog= Nybegynder
29. april 2003 - 14:41 #7
den er et argument i din service/getXxx metode

public void service(HttpServletRequest request, HttpServletResponse response)
                                                throws ServletException, java.io.IOException
{
// min redirect
response.sendRedirect("/login.jsp");
}

Det er lidt tid siden jeg rodede med servletter sidst.
Avatar billede arne_v Ekspert
29. april 2003 - 14:45 #8
response.sendRedirect(url);

sender en besked tilbage til browseren om at loade url.

getServletContext().getRequestDispatcher(url).forward(request, response);

returner output fra url i.s.f denne side.

getServletContext().getRequestDispatcher(url).include(request, response);

inkluderer output fra url i denne side.

Normal vil man foretrække forward fremfor sendRedirect, da det er hurtigere
fordi der ikke skal en ekstra browser interaktion ind i billedet.

Med en login.jsp vil man dog nok foretrække sendRedirect.

Hvis du bruger container managed declarativ security, så behøver
du slet ikke skrive den kode.
Avatar billede =maddog= Nybegynder
29. april 2003 - 14:54 #9
arne> Jes, men forward vil jo ikke opdatere adressefeltet, hvilket er en del af problemet. Eller har tingene ændret sig?
Avatar billede arne_v Ekspert
29. april 2003 - 15:08 #10
Nej.
Avatar billede axe2 Nybegynder
29. april 2003 - 16:52 #11
container managed declarativ security
var det til mig, og hvis hvad betyder det arne ?
Avatar billede arne_v Ekspert
29. april 2003 - 16:58 #12
Jeg har tilladt mig at formode, at login.jsp er en side med
to felter username og password udfra dens navn og at hele formålet
med det her kode er sende brugeren hen til login-siden, hvis han
ikke er logget ind.

container managed betyder at du ikke selv behøver checke om folk er
logget ind men at servlet containeren (serveren) gør det

declarativ betyder at du ikke skriver det tingene i java men
i en deployment desccriptor (web.xml).

maddog har svaret på det du spurgte om (nemlig hvordan du i en servlet
komme rover på en anden side således at den anden side vises i browseren).

Min kommentar var bare for at:
  - forklare hvilke muligheder der er og hvad de gør
  - forklare hvad man normalt gør (men at det næppe faldt anvendelse for en login.jsp)
  - forklare at måske kunne du helt undgå den pågældende kode ved at
    bede containeren styre det

baggrund & alternative approaches
Avatar billede axe2 Nybegynder
29. april 2003 - 17:11 #13
ok, det er fint
Avatar billede axe2 Nybegynder
29. april 2003 - 18:55 #14
arne jeg bruger websphere og der er en side der hedder web.xml, men hvordan får jeg det du beskrev til at virke, har angivet login og fejlside, men det virker ikke så der er sikkert noget jeg ikke har sat op
Avatar billede arne_v Ekspert
29. april 2003 - 19:33 #15
Du laver en web.xml i stil med:

<?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>
  <security-constraint>
      <web-resource-collection>
          <web-resource-name>logintest</web-resource-name>
          <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
          <role-name>administrator</role-name>
      </auth-constraint>
  </security-constraint>
  <login-config>
      <auth-method>FORM</auth-method>
      <form-login-config>
          <form-login-page>/login.jsp</form-login-page>
          <form-error-page>/error.jsp</form-error-page>
      </form-login-config>
  </login-config>
</web-app>

En login.jsp som:

<form action="j_security_check" method="POST">
Username: <input type="text" name="j_username"><br>
Password: <input type="text" name="j_password"><br>
<input type="submit" value="Login">
</form>

og en error.jsp som:

Login failed !

og så skal du sætte en "realm" op i din servlet engine.

Jeg prøver lige at se om jeg kan opskriften på det for WebSphere
(det er nemligt server specifikt).
Avatar billede =maddog= Nybegynder
29. april 2003 - 19:38 #16
hvis i finder noget smartere skal arne_v have pointene. jeg er ikke selv inde i dette her, så jeg følger næppe med løbende.
når/hvis i finder en løsning kan i så ikke sende mig en mail eller ICQ'e mig?
maddog@dsr.kvl.dk
ICQ:63320874
Avatar billede axe2 Nybegynder
29. april 2003 - 19:43 #17
dette står i min web-xml, efter jeg har udpeget de to side
<?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 id="WebApp">
    <display-name>gæstebog</display-name>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <display-name>LoginServlet</display-name>
        <servlet-class>LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>cd</realm-name>
        <form-login-config>
            <form-login-page>/login.jsp</form-login-page>
            <form-error-page>/sendbesked.jsp</form-error-page>
        </form-login-config>
    </login-config>
</web-app>
Avatar billede axe2 Nybegynder
29. april 2003 - 19:43 #18
det lige nævnes at jeg laver siderne i websphere og tester på en tomcat 4.0 server
Avatar billede arne_v Ekspert
29. april 2003 - 19:53 #19
For Tomcat står der hvordanman definerer en Realm i:
  http://jakarta.apache.org/tomcat/tomcat-4.1-doc/realm-howto.html
Avatar billede arne_v Ekspert
29. april 2003 - 19:54 #20
Jeg vil prøve at finde den samme information for WebSphere.
Avatar billede arne_v Ekspert
29. april 2003 - 19:55 #21
maddog>

Jeg synes at du har fortjen pointene, da du svarede på det der blev spurgt om.

Hvis axe synes det her side-sport er værd at give point for så kan han
give mig nogle extra point.
Avatar billede axe2 Nybegynder
29. april 2003 - 20:01 #23
opretter lige et spørgsmål til arne ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester