MVC模式(一)

MVC:模型-视图-控制器(Model-View-Controller)
MVC是一种通过3个不同的部分构造一个软件或组件的的理想方法:
①模型(Model)---用于存储数据的对象
②视图(View)---为模型提供数据显示的对象
③控制器(Controller)---负责具体的业务逻辑操作,即控制器根据视图提出的要求对数

据作出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,当模

型中的数据变化时,让视图更新显示。

从面向对象的角度看,MVC接口可以使得程序更具有对象化特性,也更容易维护。在设计程

序时候,可以将摸个对象看做“模型”,然后为“模型”提供欠当的显示组件,即“视图

”。在MVC模式中,“视图”、“模型”和“控制器”之间是松耦合结构,便于显示系统的

维护和扩展。

在JSP技术中,“视图”、“模型”、“控制器”的具体实现如下:
*模型(Model):一个或多个JavaBean对象,用于存储数据,JavaBean主要提供简单的

setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节。
*视图(View):一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用HTML标记和

JavaBean标记来显示数据。
*控制器(Controller):一个或多个Servlet对象,根据视图提交的要求进行数据处理操

作,并将有关的结果存储到JavaBean中,然后servlet使用重定向方式请求视图中的摸个

JSP页面更新显示,即让JSP页面通过使用JavaBean标记显示控制器存储在J avaBean中的数

据。


在MVC模式中,servlet创建的javabean也涉及到生命周期,生命周期分为request、session、application。

 

下面的是一个计算三角形面积的例子

现在设计一个web应用,该web应用提供了2个JSP页面,一个页面使得用户可以输入三角形三条边的长度;另一个页面可以显示三角形的三条边的长度和面积。web应用提供了一个servlet,负责处理三角形三条边数据,并根据三条边计算三角形的面积,然后将有关数据保存到javabean中;web应用提供的javabean负责刻画三角形模型,提供简单的获取数据和修改数据的方法。

另外,需要改写web.xml文件,

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>handle</servlet-name>
  	<servlet-class>rain.snow.HandleData</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>handle</servlet-name>
  	<url-pattern>/handleData</url-pattern>
  </servlet-mapping>
</web-app>

 

模型JavaBean

由于servlet类中要使用javabean,所以为了能顺利编译servlet类和javabean类,可以将Trangle.java存放在一个包中,方便识别

Trangle.java---在flower.grass包中

package flower.grass;

public class Triangle {
	double sideA,sideB,sideC;
	double area;
	boolean isTriangle;
	
	public double getSideA() {
		return sideA;
	}
	public void setSideA(double sideA) {
		this.sideA = sideA;
	}
	public double getSideB() {
		return sideB;
	}
	public void setSideB(double sideB) {
		this.sideB = sideB;
	}
	public double getSideC() {
		return sideC;
	}
	public void setSideC(double sideC) {
		this.sideC = sideC;
	}
	public double getArea() {
		return area;
	}
	public void setArea(double area) {
		this.area = area;
	}
	public void SetIsTriangle(boolean boo) {
		isTriangle = boo;
	}
	public boolean getIsTriangle() {
		return isTriangle;
	}

}

 注意:在这个javabean中getArea()方法并没有参与面积的计算,只是简单的返回存储的数据area

 

视图(JSP)

input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
  <body>
    <form action="handleData" method="post">
    	<p>输入三角形的三条边(提交给servlet去处理):</p>
    	<br/>边A:<input type=text name="sideA" value=0 size=4>
    		边B:<input type=text name="sideB" value=0 size=4>
    		边C:<input type=text name="sideC" value=0 size=4>
    		<input type=submit value="提交">
    </form>
  </body>
</html>

 show.jsp

<%@ page language="java" import="flower.grass.Triangle" pageEncoding="GB18030"%>
<jsp:useBean id="triangle" type="flower.grass.Triangle" scope="request"></jsp:useBean>

<html>
  <body>
    <font size=2>
    	<p>三角形的三条边是:
    	<br>边A:<jsp:getProperty property="sideA" name="triangle"/>
    		边B:<jsp:getProperty property="sideB" name="triangle"/>
    		边C:<jsp:getProperty property="sideC" name="triangle"/>
    		<br/>这三条边能构成一个三角形吗?
    		<jsp:getProperty name="triangle" property="isTriangle"/>
    		面积是:
    		<jsp:getProperty property="area" name="triangle"/>
    </font>
  </body>
</html>

 

 

控制器(Servlet)

HandleData.java---在rain.snow包中

package rain.snow;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import flower.grass.Triangle;

public class HandleData extends HttpServlet {
	public void init(ServletConfig config)throws ServletException
	{
		super.init(config);
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)
	throws ServletException,IOException
	{
		Triangle tri = new Triangle();//创建JavaBean对象
		request.setAttribute("triangle", tri);//将tri存储到HttpServletRequest对象中
		double a = Double.parseDouble(request.getParameter("sideA"));
		double b = Double.parseDouble(request.getParameter("sideB"));
		double c = Double.parseDouble(request.getParameter("sideC"));
		double p = (a + b + c)/2.0;
		double area = Math.sqrt(p*(p-a)*(p-b)*(p-c));
		//将数据存储到tri中
		tri.setSideA(a);
		tri.setSideB(b);
		tri.setSideC(c);
		tri.setArea(area);
		
		if (a+b>c&a+c>b&b+c>a)
			tri.SetIsTriangle(true);
		else
			tri.SetIsTriangle(false);
		RequestDispatcher  dispatcher = request.getRequestDispatcher("/show.jsp");
		dispatcher.forward(request, response);//清酒show.jsp显示tri中的数据
		
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException,IOException
	{
		doPost(request,response);
	}

}

 

运行结果如下:



 

实 验 报 告 课程名称 Java Web技术 实验项目 实验4 JavaBean与Servlet 实验仪器 实验4 JavaBean与Servlet 一、实验目的 1. 掌握编写JavaBean的规范,学会如何在JSP中使用JavaBean。 2. 掌握编写Servlet的规范,学会如何配置Servlet,如何在JSP中使用Servlet 3. 掌握JSP、JavaBean和Servlet综合应用的基本原则 二、实验要求 创建一个WEB应用,综合利用JSP、JavaBean和Servlet技术实用户登录(注册功能 选做)。程序至少包含:一个登录页面login.jsp一个欢迎页面hello.jsp一个serv let和一个bean。使用实验3中创建的数据库和表t_user,完成如下要求: 1. 用户在login.jsp输入用户名和密码,数据提交给servlet。 2. 设计Bean,封装数据库表t_user(实验3中创建的)中一个用户的所有信息。 3. servlet完成用户身份验证(通过从表中条件检索来验证)。如果用户合法,将该用户 所有的信息放入上述bean的实例中,并存入session,转到hello.jsp;否则转到err or.jsp 4. hello.jsp从session中取出用户信息并显示。 5. error.jsp显示错误信息"用户名或密码错误!",该页面中包含回到login.jsp的链接。 实验结果 1. login.jsp存放的物理位置在F:\workspace\shiyan4\WebContent\login.jsp 。源码如下: <%@ page contentType="text/html;charset=utf-8" language="java"%> <html> <head> <title>用户登陆</title> </head> <body> <form action="/shiyan4/Servlet" method=Get name=form> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> <td><input type="submit" name="Login" value="登陆"></td> </tr> </table> </form> </body> </html> 2. bean的名称为information ,物理存放位置在 F:\workspace\shiyan4\src\shiyan4\information.java。源码如下: package shiyan4; public class information { String username =null; String password=null; public String getname() { try { byte b[]=username.getBytes("ISO-8859-1"); username=new String(b); return username; } catch(Exception e) { return username; } } public String getpsw() { try{ byte c[]=password.getBytes("ISO-8859-1"); password=new String(c); return password; } catch(Exception e) { return password; } } public void setname(String newname) { username=newname; } public void setpsw(String newpsw) { password=newpsw; } } 3. Servlet名称为 Servlet ,物理存放位置为F:\workspace\shiyan4\src\shiyan4\Servlet.java 。 在web.xml中对上述Servlet进行配置的代码为: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ja
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值