上期介绍到JSF引入了基于组件和事件驱动的开发模式,使开发人员可以使用类似于处理传统界面的方式来开发Web应用程序。提供了行为与表达的清晰分离。 不用特别的脚本语言或者标记语言来连接UI组件和Web层。JSF技术API被直接分层在Servlet API的顶端。 技术为管理组件状态提供一个丰富的体系机构、处理组件数据、确认用户输入和操作事件。
首先我们写出简单前端页面,代码如下
<html>
<head>
<title>Welcome Page</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<center>
<form action="ServletA">
Enter User Name
<br/>
<input type="text" name="uname" value="" />
<br/>
<input type="submit" value="Next" />
</form>
</center>
</body>
</html>
<form action="ServletA"> Enter User Name <br/> <input type="text" name="uname" value="" /> <br/> <input type="submit" value="Next" /> </form>
这部分代码为中心部分,运行结果如下
<form>中指定进入ServerA中 name绑定“uname”
以下为ServerA主要代码
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;//save " user data" at server
/**
*
* @author Administrator
*/
public class ServletA extends HttpServlet {
String uname;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
uname=request.getParameter("uname");
out.print("Hi " + uname);
out.print("<br/>");
//1.Using "Hidden Form Field":Html Code
// out.print( " <form action='ServletB'>");//form
// out.print("<input type=\"hidden\" name=\"uname\" value='"+uname+"' />");//value:hidden field
// out.print(" <input type=\"submit\" value=\"Next\" />");//button
//out.print("</from>");
//2.Uing "URL-Rewriting":Link<a>
//out.print("<a href='ServletB?uname=="+uname+"'>Next</a>");
//3.Using Cookie class
// Cookie ck=new Cookie("uname",uname);//creat Cookie
// response.addCookie(ck);
//add Cookie to "response"
// out.print("<a href='ServletB'>Next</a>");
//4.Using HttpSession Login page
//a.creat new session,if not created
HttpSession se=request.getSession();
//b.set data/attributes
out.print("<a href='index'>Next</a>");
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
HttpSession se=request.getSession(); //b.set data/attributes se.setAttribute("uname ", uname); out.print("<a href='ServletB'>Next</a>");
此处uname就是index页面中的uname
绑定姓名后通过超链接
out.print("<a href='ServletB'>Next</a>")
跳转至初始页面中
如下图所示
点击Next跳转后就到初始页