`
guoyiqi
  • 浏览: 968338 次
社区版块
存档分类
最新评论

基于Myeclipse9.1的spring3.1MVC开发搭建

 
阅读更多

 (1)配置基础装备。每个符合Java EE规范的web应用程序都需要符合相应的目录结构,如图所示。

 



 

 

 

工作之初,我们需要构建web应用的基础结构。不过,现在的IDE通常都有良好的Web开发支
持,MyEclipse9.1下载与安装请参见:http://guoyiqi.iteye.com/blog/1182653

剩下的只是按照Wizard的说明构建一个web应用的工程就行了。

    a)配置web.xml。我们需要将org.springframework.Web.servlet.DispatcherServlet和
org.springframework.Web.context.ContextLoaderListener通过<servlet>和<listener>元素添
加至web.xml部署描述符文件中。另外,出于其他目的考虑,我们还可以
添加相应的Filter以及ServletContextListener以处理字符编码和Log4j初始化等配置内容,这些
完全根据当前应用程序的需求情况来决定。现在,我们的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">


	<!-- Filter 定义  -->
	<!-- Character Encoding filter -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<!-- Filter 映射 -->
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!--Spring的ApplicationContext 载入 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Spring 刷新Introspector防止内存泄露 -->
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>


	<!--配置Sring MVC的核心控制器DispatcherServlet -->

	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>

	<!--为DispatcherServlet建立映射 -->

	<servlet-mapping>
		<servlet-name>dispatcherServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>




	<!-- session超时定义,单位为分钟 -->
	<session-config>
		<session-timeout>20</session-timeout>
	</session-config>

	<!-- 出错页面定义 -->
	<error-page>
		<exception-type>java.lang.Throwable</exception-type>
		<location>/common/500.jsp</location>
	</error-page>
	<error-page>
		<error-code>500</error-code>
		<location>/common/500.jsp</location>
	</error-page>
	<error-page>
		<error-code>404</error-code>
		<location>/common/404.jsp</location>
	</error-page>
	<error-page>
		<error-code>403</error-code>
		<location>/common/403.jsp</location>
	</error-page>



	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

  b)WebApplicationContext文件的添加。我们需要在web-inf目录下添加org.springframework.Web.servlet.Dispatcherservlet和org.springframework.Web.context.ContextLoaderListener对应的WebApplicationContext配置文件(/WEB-INF/applicationContext.xml和
/WEB-INF/dispatcherServlet-servlet.xml)。这完全可以从Spring下载文件包中的sample目录下任何一个Web
应用程序中复制过来。只不过,需要根据命名规则修改相应的文件名称。当然,复制过来的文件内容
最好是清空,只保留可以在当前应用中能够通用的配置内容。

    以上基础设施构建完成之后,我们开始“盖楼”。

    (2)开发独立的业务逻辑。对于一个设计良好的web应用程序来说,虽然Web层依赖于业务层对象,
但业务层却不应该对Web层有任何的依赖。web层只应该看作是公开业务逻辑的一种视角或者交互方
式。这样做或者说这样看待系统的好处在于,业务层可以独立设计并实现,而不需要关心最终通过什
么手段将服务公开给用户。鉴于这样的理念,我们完全可以从业务层开始着手设计和实现。

entity - 领域模型层

    使用Sql First的开发模式,先设计数据库,参考DBA的性能意见而不要太片面追求OO化的表结构。

   

package entity;

public class Author {
	private String auId;
	private String auLname;
	private String phone;
	
	public String getAuId() {
		return auId;
	}
	public void setAuId(String auId) {
		this.auId = auId;
	}
	public String getAuLname() {
		return auLname;
	}
	public void setAuLname(String auLname) {
		this.auLname = auLname;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}

}

 

access - 资源访问层

    资源访问层包括对数据库、JMS、外部的WebService等的访问。

    每个领域对象对应一个DAO类。

package dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.RowMapperResultSetExtractor;

import entity.Author;


public class AuthorDao {
	class UserRowMapper implements RowMapper{
		public Object mapRow(ResultSet rs,int index) throws SQLException        {
            Author author = new Author();
            author.setAuId(rs.getString(1));
            author.setAuLname(rs.getString(2));
            author.setPhone(rs.getString(3));
            return author;
        }
    }


	private JdbcTemplate jdbcTemplate;

	public JdbcTemplate getJdbcTemplate() {
		return jdbcTemplate;
	}

	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	public List select(String where) {
		List list;

        String sql = "select * from authors";

        list = jdbcTemplate.query(sql,new RowMapperResultSetExtractor(new UserRowMapper()));

        return list;


	}

}

 

service - 业务逻辑层

    Service层有两类对象,

    一类是领域对象管理类(Entity Manager), 按领域对象划分,每个Manager类负责管理多个紧密关联的Entity的增删改查及其业务逻辑。

    一类是业务服务类(Service),按业务脚本划分,可能会访问到多种领域对象与Manager类。

package service;

import java.util.List;

import dao.AuthorDao;
import entity.Author;

public class AuthorService {
	private AuthorDao authorDao;
	public AuthorDao getAuthorDao() {
		return authorDao;
	}
	public void setAuthorDao(AuthorDao authorDao) {
		this.authorDao = authorDao;
	}
	public List<Author> getAuthorsList(){
		return authorDao.select("");
	}

}

 

web - Web MVC层

    MVC框架使用SpringMVC框架 ,每个Action实现一组页面操作。

package web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import service.AuthorService;
import entity.Author;

public class AuthorAction implements Controller {
	
	

	private AuthorService authorService;

	private String viewName; // 用于获取配置文件中的viewPage属性

	public ModelAndView handleRequest(HttpServletRequest req,
			HttpServletResponse res) throws Exception {
		Map<String,List<Author>> model=new HashMap<String,List<Author>>();
		List<Author> authors=authorService.getAuthorsList();
		model.put("model", authors);
		return new ModelAndView(this.getViewName(), model); // 调用getViewPage获取要返回的页面

	}

	public String getViewName() {
		return viewName;
	}

	public void setViewName(String viewName) {
		this.viewName = viewName;
	}

	public AuthorService getAuthorService() {
		return authorService;
	}

	public void setAuthorService(AuthorService authorService) {
		this.authorService = authorService;
	}


}

 

    View模板用JSP2.0 , 尽量使用纯html+JSP2.0 EL展示页面。

<%@ page language="java" import="java.util.*,entity.*" pageEncoding="UTF-8"%>
<%@ include file="/common/taglibs.jsp" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'authorsList.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    This is my JSP page2. <br>
 
     <c:forEach items="${model}" var="author">
     ${author.auId},${author.auLname }${author.phone }<br/>
     
     </c:forEach>
  </body>
</html>

 

    Javascript与Ajax使用JQuery或Dojo Base。

    尽量采用CSS框架规范CSS的布局。

 

(3)配置

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">


	<!-- 定义受环境影响易变的变量 -->
	<bean
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
		<property name="ignoreResourceNotFound" value="true" />
		<property name="locations">
			<list>
				<!-- 标准配置 -->
				<value>/WEB-INF/application.properties</value>
			</list>
		</property>
	</bean>

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<!-- Connection Info -->
		<property name="driverClassName" value="${jdbc.driver}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}"></property>

		<!-- Connection Pooling Info -->
		<property name="maxIdle" value="${dbcp.maxIdle}" />
		<property name="maxActive" value="${dbcp.maxActive}" />
		<property name="defaultAutoCommit" value="false" />
		<property name="timeBetweenEvictionRunsMillis" value="3600000" />
		<property name="minEvictableIdleTimeMillis" value="3600000" />
	</bean>

	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>
	<bean id="authorDao" class="dao.AuthorDao">
		<property name="jdbcTemplate">
			<ref bean="jdbcTemplate" />
		</property>
	</bean>
	<bean id="authorService" class="service.AuthorService">
		<property name="authorDao">
			<ref bean="authorDao" />
		</property>
	</bean>
</beans>

 

dispatcherServlet-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

	<bean id="localeResolver"
		class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver">
	</bean>

	<!--配置控制器的映射-->

	<bean id="urlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="authorAction.do">authorAction</prop>
			</props>
		</property>
	</bean>

	<!--配置视图-->

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/content/" />
        <property name="suffix" value=".jsp" />

	</bean>

	<!--指定控制器的实现类,并且配置其参数的值-->

	<bean id="authorAction" class="web.AuthorAction">
		<property name="viewName">
			<value>authorsList</value>
		</property>
		<property name="authorService">
			<ref bean="authorService" />
		</property>
	</bean>

</beans>

 

(4)发布运行

 

  • 大小: 20.5 KB
分享到:
评论
1 楼 macrotea 2011-10-07  
继续深入写点spring mvc的文章,呵呵,关注喔

相关推荐

    myeclipse9.1_注册机和破解文件和方法

    个人用了成功破解,里面有破解文件,有myeclipse9.1注册机,以及破解方法相关文档。 myeclipse9.1注册机 myeclipse9.1注册码 myeclipse9.1破解方法 myeclipse9.1破解 myeclipse9.1序列号

    MyEclipse9.1绿色版-part10

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part12

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part11

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part02

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part14

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part13

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part05

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part07

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part04

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1绿色版-part06

    MyEclipse9.1.part01.rar MyEclipse9.1.part02.rar MyEclipse9.1.part03.rar MyEclipse9.1.part04.rar MyEclipse9.1.part05.rar MyEclipse9.1.part06.rar MyEclipse9.1.part07.rar MyEclipse9.1.part08.rar ...

    MyEclipse9.1 破解方法

    用于破解MyEclipse9.1 具体操作里面给出了链接

    myeclipse9.1 破解补丁

    确认myeclipse 没有开启,可以破解myeclipse9.1 任何类型版本的,将该替换的替换一下,然后利用注册机生成注册码成功破解,目前只能使用到2013年,很不错的。共享一下,祝你成功!!

    myeclipse9.1破解方法

    适用与myeclipse9.1的破解,亲自试过管用

    Myeclipse9.1_破解(Spring_Blue_Bling_Professional)

    Myeclipse9.1_破解(Spring_Blue_Bling_Professional) Myeclipse9.1_破解(Spring_Blue_Bling_Professional) Myeclipse9.1_破解(Spring_Blue_Bling_Professional)

    MyEclipse 9.1 激活方法

    我试过了,按照包里的方法,可以激活myeclipse9.1,没有问题。

    安装程序+破解myeclipse 9.1 64位.zip.021

    安装程序+破解myeclipse 9.1 64位.zip.021安装程序+破解myeclipse 9.1 64位.zip.021安装程序+破解myeclipse 9.1 64位.zip.021

    MyEclipse 9.1 正式版破解及注册码,保证可行

    MyEclipse 9.1 正式版破解及注册码,保证可行,里面附有详细破解步骤说明

    myeclipse9.1 注册机 破解工具

    myeclipse9.1 注册机 破解工具 ,我自己一直在用的,用了很久了,才想到上传下共享下,哈哈

    MyEclipse 9.1 破解文件及方法

    MyEclipse for Spring 9.1 破解步骤: 前提: 确保MyEclipse没有开启,已安装配置好jdk1.6.0_17!以上版本会失败! 1. 把 '破解文件.替换'文件夹内的文件覆盖原文件, 可以提前备份原文件. 2. 用 myeclipse9_keygen_...

Global site tag (gtag.js) - Google Analytics