如何从java servlet重定向到html页面以及来自servlet的变量?

时间:2015-03-28 10:06:55

标签: java html servlets

我想从我的java servlet中打开一个html页面,并且应该使用该servlet的变量来分配要打开的html页面中的表单字段。

这是我的servlet

import java.io.*;
import java.sql.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SignIn extends HttpServlet
{
public void doPost(HttpServletRequest req,HttpServletResponse res)throws IOException,ServletException
{
    PrintWriter pw=res.getWriter();
    String fname=null,lname=null,uname,pwd,dept=null,mobno=null;

    Connection con=null;
    Statement stat=null;
    ResultSet rs=null;
    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con=DriverManager.getConnection("jdbc:odbc:userdb");
        stat=con.createStatement();
            uname=req.getParameter("un");
            pwd=req.getParameter("password");
            //pw.println(pwd);



    rs=stat.executeQuery("select * from userdb where uname= '"+uname+"' and pwd='"+pwd+"'");

                while(rs.next())
                {

                    fname=rs.getString("fname");
                    lname=rs.getString("lname");
                    dept=rs.getString("dept");
                    mobno=rs.getString("mobno");
                }

    //pw.println(fname+" "+lname+" "+dept+" "+mobno); 

    //I want to pass the above four variables (fname, lname, dept, mobno) to   an html page and assign these to a form field in html page and I need to open that html page from this servlet

    }
    catch(Exception e)
    {
        pw.println(e.toString());
    }
}
}

这是我想从servlet打开的html页面

<!doctype html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css"href="sty2.css"/>
</head>
<body>
<div id="bg"><img src="bg.jpg" width="100%" height="100%" alt=""></div>
<div id="content">

<form name="data" action="">

<div id="header">
<h1>TEXT</h1>
</div>

<div id="header1">
<h2> WELCOME </h2>
</div>
<div id="header2">
<input type="button" name="logout" value="Logout" id="dlbutton"  onClick="window.open('Main.html')"/>
</div>

<div id="nav">
<br/>
First Name:<br/><br/>
Last Name:<br/><br/>
Department :<br/><br/>
Mobile No.:<br/><br/>
</div>
<div id="section">
<br/>
<input class="textbox" type="text" name="fn" placeholder="first name" onfocus="this.placeholder = ''" onblur="this.placeholder = 'first name'"/><br/>    <br/>
<input class="textbox" type="text" name="ln" placeholder="last name" onfocus="this.placeholder = ''" onblur="this.placeholder = 'last name'" /><br/><br/>
<input class="textbox" type="text" name="dn" placeholder="dept name" onfocus="this.placeholder = ''" onblur="this.placeholder = 'dept name'" /><br/><br/>
<input class="textbox" type="text" name="mn" placeholder="mobile number" onfocus="this.placeholder = ''" onblur="this.placeholder = 'mobile number'" /><br/><br/>
</div>
<div id="footer">
<input type="submit" name="update" value="Update" id="dlbutton"/>
</form>
</div>
</div>
</body>
</html>

如何实现这一目标?任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:0)

重定向会向浏览器发送一条消息,告知其发送不同网址的获取请求请求 因此,如果您需要来自当前请求的数据,您必须将其作为查询字符串包含在重定向URL中,或者保存在会话中,以便后续请求可以检索它。

另一种方法是使用转发,该转发将调用另一个URL并在当前请求的响应中包含响应。

在html页面中动态嵌入字段值需要像JSP这样的技术,请查看this。您需要一个像Tomcat或Jetty这样的JSP引擎,然后:

  • 将.html重命名为.jsp
  • 为每个value='<%= request.fname %>"代码添加<input >或类似内容

然后在您的servlet中,您可以通过以下方式进行重定向:

response.setStatus (303);
response.setHeader ("Location", jsppath+"? fname="+fname+"&lname="+lname+"&dept="+dept+"&mobno="+mobno);

这将是一个相当奇怪的JSP实现,因为它有点内在。正如prashant所说,你应该花一些时间学习JSP。或者更好的还是看看JavaEE 6或更高版本,包括JSF。

JSP比JSF更容易学习,但JavaEE 6非常值得花时间。

看起来有点像你需要像JavaEE这样的动态Web应用程序框架来做你想做的事。