PDA

View Full Version : [Java] Passaggio valori tra jsp e servlet


albertovw
22-11-2007, 13:00
Ciao a tutti. Sto diventanto pazzo per un problema ridicolo...

JSP
Prendo da un <form method="POST... uno username ed una password.
A questo punto passo tramite la variabile di sessione "session" lo user e la pass facendo session.setAttribute("username",username); e il corrispettivo per la password.

SERVLET
Dalla servlet mi scrivo
HttpSession session = request.getSession(); //true opzionale
String username = (String) session.getAttribute("username);

ma la variabile username nella servler è sempre null!!!
sto impazzendo!!! eppure ho rovistato migliaia(esagero ma una 50ina sicuro) tra manuali e guide online e questa è la procedura corretta/consigliata!!!

che devo fare?? un guru di java sa dirmi qualcosa??


ecco il codice completo nel qual caso servisse, magari c'è un errore nascosto!!


JSP


<html>
<head>
<title>Please Log In</title>
<style type="text/css"></style>
<script language="JavaScript" type="text/javascript"></script>
</head>
<body onload="login_focus()">
<%
boolean error = false;
String prmError = request.getParameter("error");
String username = request.getParameter("j_username");
if (prmError != null) {
error = true;
}
if (username == null) {
username = new String();
}
%>
<form method="POST" action="j_security_check">
<table>
<%
if (error) {
%>
<tr>
<th colspan="2" class="errorMessage"> Invalid username or password </th>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<%
}
%>
<tr>
<th class="label">User Name:</th>
<td><input type="text" name="j_username" id="j_username" value="<%=username%>"></td>
<%session.setAttribute("username",username);%>

</tr>
<tr>
<th class="label">Password:</th>
<td><input type="password" name="j_password" id="j_password" value="<%=password%>"></td>
<%session.setAttribute("password",password);%>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td class="alignRight"><input type="submit" value="Log In"></td>
<td class="alignLeft"><input type="reset"></td>
</tr>
</table>
</form>
</body>
</html>


SERVLET



public class AdministratorMainServlet extends HttpServlet {

private static final Log log = LogFactory.getLog(AdministratorMainServlet.class);

/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
if (log.isInfoEnabled()) {
final StringBuilder sb = new StringBuilder();
sb.append("request from:").append(request.getRemoteUser()).append('/').append(request.getRemoteAddr());

if (log.isTraceEnabled()) {
for (final Enumeration e = request.getAttributeNames(); e.hasMoreElements();) {
String name = e.nextElement().toString();
sb.append("\nattr:").append(name).append("=").append(request.getAttribute(name).toString());
}
for (final Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
String name = e.nextElement().toString();
sb.append("\nparam:").append(name);
String[] values = request.getParameterValues(name);
for (int i = 0; i < values.length; ++i) {
sb.append(":").append(values[i]);
}
}
for (final Enumeration e = request.getHeaderNames(); e.hasMoreElements();) {
String name = e.nextElement().toString();
sb.append("\nheader:").append(name);
for (java.util.Enumeration headers = request.getHeaders(name); headers.hasMoreElements();) {
sb.append(":").append(headers.nextElement().toString());
}
}
log.trace(sb.toString());
} else {
log.info(sb.toString());
}
}

HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");

response.setContentType("text/html;charset=UTF-8");

try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

String loggingLevel = readOptionalParameter(envCtx, "logging.level");
String jdbcHost = readOptionalParameter(envCtx, "jdbc.host");
String jdbcPort = readOptionalParameter(envCtx, "jdbc.port");

String jdbcDriver = (String)envCtx.lookup("jdbc.driver");
String jdbcDatabase = (String)envCtx.lookup("jdbc.database");
String jdbcUser = (String)envCtx.lookup("jdbc.user");
String jdbcPwd = (String)envCtx.lookup("jdbc.pwd");
String jdbcDriverClass = (String)envCtx.lookup("jdbc.driverclass");
String fileManagerEndPoint = (String)envCtx.lookup("fileManagerEndPoint");
String downloaderEndPoint = (String)envCtx.lookup("downloaderEndPoint");

String scheme = request.getScheme(); // http
String serverName = request.getServerName(); // hostname.com
int serverPort = request.getServerPort(); // 80
String contextPath = request.getContextPath(); // /mywebapp

if ((jdbcHost == null) || (jdbcHost.length() == 0)) {
jdbcHost = serverName;
}
String uploadFileUrl = scheme+"://"+serverName+":"+serverPort+contextPath+"/"+"fileupload";
fileManagerEndPoint = scheme+"://"+serverName+":"+serverPort + fileManagerEndPoint;
downloaderEndPoint = scheme+"://"+serverName+":"+serverPort + downloaderEndPoint;

String swVerInfo= "";
String swTitleInfo= "";

InputStream inputstream= getServletContext().getResourceAsStream("/AppletAdministration.jar");
JarInputStream jarInputStream= new JarInputStream(inputstream);
Manifest manifest = jarInputStream.getManifest();

//get MANIFEST_VERSION value from manifest

if (manifest!=null) {
try {
Map map= manifest.getEntries();
Attributes attrs = (Attributes)map.get("adminApplet");

swVerInfo+= (attrs!=null && attrs.getValue(Attributes.Name.IMPLEMENTATION_VERSION)!=null)?"(ver. "+attrs.getValue(Attributes.Name.IMPLEMENTATION_VERSION)+")":"";
swTitleInfo+= (attrs!=null && attrs.getValue(Attributes.Name.IMPLEMENTATION_TITLE)!=null)?"\""+attrs.getValue(Attributes.Name.IMPLEMENTATION_TITLE)+"\"":"Mini Metro Administration Console";

} catch (Exception ex) {
}
}

PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
//out.println("<title>Administration Console</title>");
out.println("<title>" + swTitleInfo + " " + swVerInfo + "</title>");
out.println("<link REL=\"STYLESHEET\" TYPE=\"text/css\" HREF=\"main.css\"/>");
out.println("</head>");
out.println("<body>");

//out.println("<!--" + test + "-->");

out.println("<APPLET ALIGN=\"CENTER\"");

out.print("codebase=\"");
out.print(contextPath);
out.println("/\"");

out.println("code=\"SupervisorApplet.class\"");

out.print("archive=\"");
out.print("AppletAdministration.jar,");
out.print("axis.jar,");



out.println("width=\"100%\"");
out.println("height=\"100%\">");


// parameters
if ((loggingLevel != null) && (loggingLevel.length() > 0)) {
out.print("<param name=\"");
out.print("logging.level");
out.print("\" value=\"");
out.print(loggingLevel);
out.println("\" />");
}

out.print("<param name=\"");
out.print("jdbc.driver");
out.print("\" value=\"");
out.print(jdbcDriver);
out.println("\" />");

out.print("<param name=\"");
out.print("jdbc.host");
out.print("\" value=\"");
out.print(jdbcHost);
out.println("\" />");

out.print("<param name=\"");
out.print("jdbc.port");
out.print("\" value=\"");
out.print(jdbcPort);
out.println("\" />");

out.print("<param name=\"");
out.print("jdbc.database");
out.print("\" value=\"");
out.print(jdbcDatabase);
out.println("\" />");

out.print("<param name=\"");
out.print("jdbc.user");
out.print("\" value=\"");
out.print(jdbcUser);
out.println("\" />");

out.print("<param name=\"");
out.print("jdbc.pwd");
out.print("\" value=\"");
out.print(jdbcPwd);
out.println("\" />");

out.print("<param name=\"");
out.print("jdbc.driverclass");
out.print("\" value=\"");
out.print(jdbcDriverClass);
out.println("\" />");



final Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; ++i) {
if ("JSESSIONID".equalsIgnoreCase(cookies[i].getName())) {
out.print("<param name=\"");
out.print("sessionid");
out.print("\" value=\"");
out.print(cookies[i].getValue());
out.println("\" />");
break;
}
}
}

/////////////////////////
// PROFILATION
/////////////////////////

out.print("<param name=\"");
out.print("roles");
out.print("\" value=\"");

final StringBuilder builder = new StringBuilder();
for (final Iterator roles = Roles.getValues(); roles.hasNext();) {
final String role = roles.next().toString();
if (request.isUserInRole(role)) {
if (builder.length() > 0) {
builder.append(",");
}
builder.append(role);
}
}
out.print(builder);
out.println("\" />");

out.println("</APPLET>");
out.println("</body>");
out.println("</html>");
out.close();

} catch (Throwable e){
log.error(e.getMessage(), e);
throw new ServletException(e.getMessage());
}
}
private static final String readOptionalParameter(Context context, String name) {
try {
return (String) context.lookup(name);
} catch (NamingException ex) {
log.warn(ex.getMessage());
return null;
}
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
processRequest(request, response);
}

/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
processRequest(request, response);
}

/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
}

ally
22-11-2007, 15:52
...allora...se la request è un HttpServletRequest...



public void test(HttpServletRequest request) throws Exception{

String attributo = (String)request.getSession().getAttribute("attributo");

}



...usando Struts...ma gli strati sono simili...

...ciao...