`

MVC的第一个实例

阅读更多
J2EE
J2EE API包含以下几个部分:

Jsp(java server page)接口:优秀的jsp接口易于维护,不负责业务逻辑的处理(可以交给JavaBean和ejb完成)
JNDI(java naming and directory interface)接口:为访问目录服务提供支持
还有[/size]Java事务接口(jta),数据库连接(jdbc api),远程方法调用(rmi),消息服务接口(jms)
这些API和3层架构的关系如下图:



在myeclipse中建立一个web工程MVCFirst。

模型层
/*
 *@(#){file_name} Aug 3, 2010
 *
 *Copyright 2010 Zhoujunmei.
 */
package javabean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class User {
	private String userName;
	private String userAddress;
	private String userSex;
	private Connection conn;
	private static final String SQL = "select username,usersex,useraddress from user where username=?";

	public User() { // 构造函数进行jdbc数据库连接
		try {
			Class.forName("org.gjt.mm.mysql.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/login", "root", "root");

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void getDBUser(String userName) {
		PreparedStatement selectQuery = null;
		try {
			selectQuery = conn.prepareStatement(SQL);
			selectQuery.setString(1, userName);
			ResultSet rs = selectQuery.executeQuery();

			while (rs.next()) {
				this.setUserName(rs.getString("username"));
				this.setUserSex(rs.getString("usersex"));
				this.setUserAddress(rs.getString("useraddress"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserAddress() {
		return userAddress;
	}

	public void setUserAddress(String userAddress) {
		this.userAddress = userAddress;
	}

	public String getUserSex() {
		return userSex;
	}

	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}

}


使用的是mysql数据库,需要导入数据库驱动包,mysql中建立一个login数据库,建立user数据表

用户输入界面的jsp代码:Usernameinput.jsp
    <%@ page language="java" contentType="text/html;charset=gb2312"
	pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>username input</title>
	</head>
	<body bgcolor="#ffffff">
	<!-- 我们约定本页面将用户输入提交的action所指定的servlet中去,这里就是视图和控制器交互的所在 -->
		<form method="post" action="UserServlet" name="form1">
			<br>
			Username:
			<br>
			<input type="text" size="24" name="username" value="">
			<p>
				<input type="submit" value="提交" name="submit">
				<input type="reset" value="重置" name="reset">
		</form>
	</body>
</html>


返回信息的界面jsp代码:Usernameresult.jsp
 <%@ page language="java" contentType="text/html;charset=gb2312"
	pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>username result</title>
	</head>
	<body bgcolor="#ffffff">
	<!-- 接收控制器层的返回信息,在servlet控制器中的定义3个返回信息会以userName,userSex标识 -->
		<h1>username:</h1><%=request.getAttribute("userName") %>
		<h2>usersex:</h2><%=request.getAttribute("userSex") %>
		<h3>useraddress:</h3><%=request.getAttribute("userAddress") %>
	</body>
</html>



控制器代码:
在myeclipse中新建一个servlet,doPost和doGet代码如下:
doPost和doGet根本区别是doGet请求时url会包含传入的参数

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javabean.User;

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

public class UserServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public UserServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		<input type="text" size="24" name="username" value="">
	String username = request.getParameter("username");   //取得视图层的表单输入的username
	User user = new User();
	user.getDBUser(username);   //调用 模型层的业务逻辑方法
	
	//将得到的信息放在request的attribute中以userName,。。来标识
	request.setAttribute("userName", user.getUserName());
	request.setAttribute("userSex", user.getUserSex());
	request.setAttribute("userAddress", user.getUserAddress());
	
	String nextpage ="/usernameresult.jsp";
	RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher(nextpage);
	dispatcher.forward(request, response);
	
	}

	/**
	 * The doPost method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to
	 * post.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

	/**
	 * Initialization of the servlet. <br>
	 * 
	 * @throws ServletException
	 *             if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}
}
建完servlet后在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://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
  <!-- 建立servlet类后自动配置的 -->
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>servlet.UserServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/UserServlet</url-pattern>
  </servlet-mapping>
  </web-app>

执行结果:
启动Tomcat,在地址栏输入:
http://localhost:8080/MVCFirst/usernameinput.jsp,输入数据库中已有的用户名,就会跳转到usernameresult.jsp页面
  • 大小: 13.3 KB
分享到:
评论

相关推荐

    PureMvc实例 PureMvc第一个实例

    在这个名为"MyFirstPureMvc"的压缩包中,你将找到一个使用PureMvc开发的Adobe AIR项目的完整实例,这将帮助初学者理解如何在实际项目中应用PureMvc。 首先,让我们深入了解一下PureMvc的MVC架构: 1. **模型...

    基于ASP.NET MVC项目实例

    8. **WebApplication01-第一套**:这可能是项目的主要入口点或源代码文件夹。在这个文件夹中,你可能会找到解决方案文件(.sln),项目文件(.csproj),以及控制器、模型、视图和其他支持文件,如配置文件、样式表...

    MVC3Demo实例

    "MVC3Demo实例"是一个适合初学者的ASP.NET MVC3项目,它展示了如何利用MVC模式和三层架构构建一个包含增删改查功能的小型Web应用。通过学习这个实例,开发者可以了解MVC3的关键概念,如模型、视图和控制器的职责,...

    一个很好的puremvc实例

    标题中的“一个很好的puremvc实例”表明我们即将探讨的是关于PureMVC框架的实际应用案例。PureMVC是一个轻量级的、跨平台的MVC(Model-View-Controller)设计模式实现,它主要应用于创建复杂但组织良好的应用程序...

    asp.Net mvc4 实例

    6. ** Areas**:ASP.NET MVC4引入了区域(Areas)的概念,允许在一个大型项目中组织多个相互独立的功能模块,每个区域都有自己的控制器、视图和模型,类似于小型的MVC应用程序。 7. **AJAX支持**:ASP.NET MVC4内置...

    第二章 Spring MVC 增改查实例

    **第二章 Spring MVC 增改查实例** Spring MVC 是 Spring 框架的一个模块,专为构建基于 Web 的应用程序而设计。它提供了一个灵活的架构,用于处理 HTTP 请求、模型视图之间的交互以及与后端数据库的数据操作。在本...

    ASP.NET+MVC3 音乐商店实例_完整中文版

    *** MVC音乐商店实例项目是一个以音乐商店为主题的在线商城应用,通过创建此项目,用户可以了解如何使用*** MVC3、Razor视图引擎和Entity Framework Code First方法来构建一个完整的Web应用程序。 在创建项目的过程...

    一个完整的Spring MVC的CRUD操作实例

    在本文中,我们将深入探讨如何实现一个完整的Spring MVC CRUD(创建、读取、更新、删除)操作实例。首先,我们需要了解Spring MVC的基本组件和它们的角色。 1. **模型(Model)**: 模型是应用程序的核心,包含了...

    多款Delphi MVC框架应用实例.rar

    "codesc.net"这个名字可能是指一个基于Delphi的MVC框架或项目,它可能是一个网络应用开发框架,用于构建服务器端的应用程序。在这个框架中,开发者可以利用MVC模式将业务逻辑、数据处理和用户界面分离,提高代码的可...

    asp.net MVC3 IBATIS.NET 实例

    ASP.NET MVC3与IBATIS.NET的结合使用是开发高效、灵活的...同时,这也是迈向更复杂、更高效的数据处理解决方案的第一步。在深入学习的过程中,你还可以探索如事务管理、存储过程的使用以及复杂的查询等更多高级特性。

    Spring MVC 入门实例

    如果你的数据库已经配置好, 就将第一个注释去掉. jdbc.properties: 1 jdbc.driverClassName=com.mysql.jdbc.Driver 2 jdbc.url=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8 3 jdbc....

    MVC Contrib实例源码

    **MVC Contrib** 是一个针对ASP.NET MVC框架的开源扩展库,它提供了许多额外的功能和工具,以增强ASP.NET MVC的开发体验。这个压缩包包含了MVC Contrib项目的实例源码和相关组件,对于理解MVC Contrib的工作原理以及...

    spring4MVC+Hibernate4实例(增删改查)

    在本实例中,"spring4MVC+Hibernate4实例(增删改查)"是一个基于Maven构建的Java Web项目,旨在演示如何整合Spring MVC和Hibernate框架来实现数据的CRUD(创建、读取、更新和删除)操作。Spring MVC是Spring框架的...

    MVC实例教程

    1. **创建第一个MVC项目**:如何使用Visual Studio创建新的MVC项目,配置路由规则。 2. **控制器和动作**:理解控制器类和动作方法,以及如何处理HTTP请求。 3. **视图和Razor语法**:学习Razor视图引擎,创建和渲染...

    Swfupload上传Mvc3实例

    Mvc3是Microsoft的Model-View-Controller设计模式的第三个版本,是一个用于构建动态网站的开源框架。它提供了更好的代码组织和测试能力,使得开发过程更为灵活和高效。在Mvc3中整合SwfUpload,可以利用其异步上传的...

    spring3.0 mvc中文实例教程

    2. **创建Hello World应用程序**:引导读者完成第一个简单的Spring MVC应用。 3. **表单处理**:讲解如何在Spring MVC中处理用户输入的表单数据。 4. **Tiles支持与Eclipse插件教程**:介绍使用Tiles布局系统和...

    mvc+ibatisnet 实例代码教程

    - MVC3是ASP.NET MVC框架的第三个主要版本,引入了许多改进和新特性,如Razor视图引擎,增强了对JavaScript库如jQuery的支持,以及更强大的模型绑定和验证机制。 2. **模型(Model)** - 在MVC3中,模型负责业务...

    mvc2 实例 通讯录管理

    “mvc2 实例 通讯录管理”表明这是一个使用ASP.NET MVC2框架开发的实例项目,主要用于实现一个通讯录的管理系统。MVC(Model-View-Controller)是一种设计模式,常用于Web应用开发,将业务逻辑、数据模型和用户界面...

    EF4+MVC6+AutofacIOC实例

    标题中的“EF4+MVC6+AutofacIOC实例”代表了一个集成开发项目,它结合了Entity Framework 4(数据库访问技术),ASP.NET MVC 6(Web应用程序框架)和Autofac(依赖注入容器)。这是一个针对初学者的示例框架,旨在...

Global site tag (gtag.js) - Google Analytics