-- 作者:admin
-- 发布时间:2009/3/3 23:38:52
-- MVC的基本编程方法
1、基本方法 1、1 简单JavaBean的使用 package mypack;
public class Time { private int hour; private int minute; private int second;
public Time() { }
public Time(int h, int m, int s) { setTime(h, m, s); }
public void setHour(int h) { if (h >= 0 && h <= 23) hour = h; else hour = 0; }
public int getHour() { return hour; }
public void setMinute(int m) { if (m >= 0 && m <= 59) minute = m; else minute = 0; }
public int getMinute() { return minute; }
public void setSecond(int s) { if (s >= 0 && s <= 59) second = s; else second = 0; }
public int getSecond() { return second; }
public void setTime(int h, int m, int s) { setHour(h); setMinute(m); setSecond(s); }
public String getTime() { java.text.DecimalFormat df = new java.text.DecimalFormat("00"); return df.format(hour % 12) + ":" + df.format(minute) + ":" + df.format(second) + (hour < 12 ? "AM" : "PM"); }
public String toString() { return getTime(); } }
可以直接在servlet和JSP中使用,如在JSP中为: <html> <head> </head> <body> <% mypack.Time t1 = new mypack.Time(13, 20, 30); out.print(t1); %> </body> </html>
更为简单的方法为: <%@page c%> <%@page import="mypack.Time"%> <html> <head> </head> <body> 时间为: <% Time t1 = new Time(13, 20, 30); out.print(t1); %> </body> </html>
使用JavaBean的写法为: <%@page c%> <html> <head> </head> <body> 时间为: <jsp:useBean id="t1" class="mypack.Time" /> <jsp:setProperty name="t1" property="hour" value="13" /> <jsp:setProperty name="t1" property="minute" value="20" /> <jsp:setProperty name="t1" property="second" value="30" /> <jsp:getProperty name="t1" property="time" /> </body> </html>
注意: 如果不存在对应的JavaBean属性,则运行JSP网页就会报错,如“Cannot find any information on property \'xxx\' in a bean of type \'mypack.Time\'(在Time类中找不到xxx 属性对应的信息)
1、2 在不同网页中共享JavaBean index.jsp文件: <%@page c%> <html> <head> </head> <body> <jsp:useBean id="t1" class="mypack.Time" scope="session" /> <jsp:setProperty name="t1" property="hour" value="13" /> <jsp:setProperty name="t1" property="minute" value="20" /> <jsp:setProperty name="t1" property="second" value="30" /> <a href="result.jsp">点击</a> </body> </html>
result.jsp文件: <%@page c%> <html> <head> </head> <body> 时间为:<jsp:getProperty name="t1" property="time" /> </body> </html>
2、实例(猜数字) 1)系统产生随机整数,并提供一个接受用户输入猜数的网页(guess.jsp), 确认后,程序提交给另外一个网页(CompareControl.java)来处理。 2)处理网页(CompareControl.java)对用户猜数进行判断,并按照功能要求显示不同信息,并允许用户继续猜数。
基本方法: CRandom.java文件: package mypack;
public class CRandom { private int rand = 0;
public CRandom() { rand = (int) (Math.random() * 100) + 1; }
public int getRandom() { return rand; } }
guess.jsp文件: <%@page c%> <html> <head> </head> <body> <jsp:useBean id="cr" class="mypack.CRandom" scope="session"/> <form method="POST" action="CompareControl"> 猜数字:<input type="text" name="guessNumber" size="20"> </form> </body> </html>
CompareControl文件: package mypack;
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.HttpSession;
public class CompareControl extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=GB2312"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); String s1 = request.getParameter("guessNumber"); int num1 = Integer.parseInt(s1); mypack.CRandom cr = (mypack.CRandom) session.getAttribute("cr"); int num2 = cr.getRandom(); //out.print("系统产生的随机数为" + num2 + "<br>"); if (num1 == num2) out.print("成功!"); else if (num1 < num2) out.print("太小了<p><a href=\'guess.jsp\'>点击继续...</a>"); else out.print("太大了<p><a href=\'guess.jsp\'>点击继续...</a>"); }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }
可以设置猜数范围的方法: CRandom文件: package mypack;
public class CRandom { private int initialNumber = 0; private int rand = 0;
public CRandom() { }
public CRandom(int init) { setInitialNumber(init); }
public void setInitialNumber(int num) { if (num < 0) initialNumber = 0; else initialNumber = num; generateRandom(); }
public void generateRandom() { rand = (int) (Math.random() * initialNumber) + 1; }
public int getRandom() { return rand; } }
guess.jsp文件: <%@page c%> <html> <head> </head> <body> <jsp:useBean id="cr" scope="session" class="mypack.CRandom"> <jsp:setProperty name="cr" property="initialNumber" value="100" /> </jsp:useBean> <form method="POST" action="CompareControl">猜数字:<input type="text" name="guessNumber" size="20"></form> </body> </html>
完整的MVC结构: CompareControl.java文件: package mypack;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
public class CompareControl extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=GB2312"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true);
String s1 = request.getParameter("guessNumber"); int num1 = Integer.parseInt(s1); mypack.CRandom cr = (mypack.CRandom) session.getAttribute("cr"); int num2 = cr.getRandom(); // out.print("系统产生的随机数为" + num2 + "<br>"); if (num1 == num2) { RequestDispatcher disp = request .getRequestDispatcher("success.jsp"); disp.forward(request, response); } else if (num1 < num2) { RequestDispatcher disp = request.getRequestDispatcher("less.jsp"); disp.forward(request, response); } else { RequestDispatcher disp = request.getRequestDispatcher("more.jsp"); disp.forward(request, response); } }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }
success.jsp文件: <%@page c%> <html> <head> </head> <body> 成功! </body> </html>
less.jsp文件: <%@page c%> <html> <head> </head> <body> 太小了<p><a href=\'guess.jsp\'>点击继续...</a> </body> </html>
more.jsp文件: <%@page c%> <%@page c%> <html> <head> </head> <body> 太大了<p><a href=\'guess.jsp\'>点击继续...</a> </body> </html>
进一步合并这些目标jsp网页: CInfo.java文件: package mypack;
public class CInfo { private String info;
public void setInfo(String str) { info = str; }
public String getInfo() { return info; } }
CompareControl package mypack;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
public class CompareControl extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=GB2312"); HttpSession session = request.getSession(true);
String s1 = request.getParameter("guessNumber"); int num1 = Integer.parseInt(s1); mypack.CRandom cr = (mypack.CRandom) session.getAttribute("cr"); int num2 = cr.getRandom(); // out.print("系统产生的随机数为" + num2 + "<br>"); mypack.CInfo ci = (mypack.CInfo) session.getAttribute("ci"); if (num1 == num2) { RequestDispatcher disp = request .getRequestDispatcher("success.jsp"); disp.forward(request, response); } else { if (num1 < num2) ci.setInfo("太小了"); else ci.setInfo("太大了"); RequestDispatcher disp = request.getRequestDispatcher("guess.jsp"); disp.forward(request, response); } }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }
guess.jsp文件: <%@page c%> <html> <head> </head> <body> <jsp:useBean id="cr" scope="session" class="mypack.CRandom"> <jsp:setProperty name="cr" property="initialNumber" value="10" /> </jsp:useBean> <jsp:useBean id="ci" scope="session" class="mypack.CInfo"> <jsp:setProperty name="ci" property="info" value="欢迎您!" /> </jsp:useBean> <jsp:getProperty name="ci" property="info" /><br> <form method="POST" action="CompareControl">猜数字:<input type="text" name="guessNumber" size="20"></form> </body> </html>
[此贴子已经被作者于2010-12-12 10:31:41编辑过]
|