Hallo Forum!
Ich versuche gerade anhand eines kleinen Beispiels das MVC Prinzip bei einer WebApp zu verstehen.
Ich habe ein zentrales ControllerServlet welches die Requests dispatched.
Die jeweilige Klassen sollen dann ein Model befüllen und mittels forward die View erneut anzeigen.
Das funktioniert auch zwar, jedoch wird die URL bei einer falschen Eingabe beim Login immer länger.
Hier ist mal der Code:
Controller
LoginBean zum validieren der LoginDaten
Model
web.xml:
index.jsp
greeting.jsp
Das man keine Scriptlets verwenden soll ist mir schon klar. Mir gings nur darum schnell einmal das MVC abzubilden.
Ruf ich das ganze so auf:
http://localhost:8080/webappmvc/index.jsp
wird die Seite angezeigt, trage ich was falsches ein erzeugt er mir im Browser diese URL:
http://localhost:8080/webappmvc/servlets/logon
wird jedoch wieder etwas falschen eingegeben, wird diese URL angezeigt:
http://localhost:8080/webappmvc/servlets/servlets/logon
Hatte jemand schon mal dieses Problem? Ist wahrscheinlich nur ein kleiner Einstellungsfehler.
Danke schon mal für Hilfe!
Ich versuche gerade anhand eines kleinen Beispiels das MVC Prinzip bei einer WebApp zu verstehen.
Ich habe ein zentrales ControllerServlet welches die Requests dispatched.
Die jeweilige Klassen sollen dann ein Model befüllen und mittels forward die View erneut anzeigen.
Das funktioniert auch zwar, jedoch wird die URL bei einer falschen Eingabe beim Login immer länger.
Hier ist mal der Code:
Controller
Code:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import controller.login.LoginBean;
public class ControllerServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String action = req.getParameter("action");
if("logon".equals(action))
new LoginBean().login(req.getParameter("user"), req.getParameter("pwd"), req, resp);
}
}
LoginBean zum validieren der LoginDaten
Code:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.Model;
public class LoginBean {
public void login(String user, String pwd, HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException{
HttpSession session = request.getSession();
if("admin".equals(user) && "master".equals(pwd)){
Model model = new Model();
model.setUser(user);
session.setAttribute("model", model);
request.getRequestDispatcher("/jsps/greeting.jsp").forward(request, resp);
} else {
request.getRequestDispatcher("/index.jsp").forward(request, resp);
}
}
}
Model
Code:
public class Model {
private String user = null;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}
web.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>WebappMVC</display-name>
<servlet>
<description></description>
<display-name>Controller</display-name>
<servlet-name>ControllerServlet</servlet-name>
<servlet-class>controller.ControllerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name>
<url-pattern>/servlets/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
index.jsp
Code:
<html>
<body>
<form action="servlets/logon" method="post">
<table>
<tr>
<td>UserID:</td>
<td><input type="text" maxlength="6" name="user"></td>
</tr>
<tr>
<td>PWD:</td>
<td><input type="password" maxlength="8" name="pwd"></td>
</tr>
</table>
<input type="hidden" name="action" value="logon"/>
<input type="submit" value="Anmelden" />
</form>
</body>
</html>
greeting.jsp
Code:
<%@ page import="model.Model"%>
<html>
<body>
<%
Model model = (Model) request.getSession().getAttribute("model");
%>
<h3>Hallo <%= model.getUser() %></h3>
</body>
</html>
Das man keine Scriptlets verwenden soll ist mir schon klar. Mir gings nur darum schnell einmal das MVC abzubilden.
Ruf ich das ganze so auf:
http://localhost:8080/webappmvc/index.jsp
wird die Seite angezeigt, trage ich was falsches ein erzeugt er mir im Browser diese URL:
http://localhost:8080/webappmvc/servlets/logon
wird jedoch wieder etwas falschen eingegeben, wird diese URL angezeigt:
http://localhost:8080/webappmvc/servlets/servlets/logon
Hatte jemand schon mal dieses Problem? Ist wahrscheinlich nur ein kleiner Einstellungsfehler.
Danke schon mal für Hilfe!