Spring MVC应用的简单例子

【准备工作】

1,以   scott模式登录 Oracle数据库,并新建表t_ent_ent_baseSQL

,并新增测试数据5条以上

create  table t_ent_ent_base   (
ent_code CHAR(32) DEFAULT   sys_guid() not null,-- 企业编号
ent_name VARCHAR2(150),-- 企业名称c
logo VARCHAR2(500),--企业    logo
loc VARCHAR2(50),--企业所在地
addr VARCHAR2(100),--企业详细地址
zip_code CHAR(6),-- 邮政编码
biz_lic VARCHAR2(50) not null,--营业执照编号
biz_lic_auth VARCHAR2(100),--营业执照发证机关
ent_type VARCHAR2(50),--企业类型(股份,国企,央企)
fnd_date DATE,-- 成立日期
corp VARCHAR2(50),--法人
biz_scope VARCHAR2(200),-- 经营范围
contact VARCHAR2(50),-- 联系人
tel VARCHAR2(50),-- 联系电话
ofc_tel VARCHAR2(50),-- 办公电话
ent_desc VARCHAR2(1000),-- 企业简介
constraint  PK_T_ENT_ENT_BASE   primary  key  (ent_code)
);

步骤  2,参照新建Web项目 ent,添加    SpringSpring      MVCMyBatisOracle  JDBC驱动、Druid数据源等库文件。


步骤  3,修改部署描述符  web.xml文件

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring-*.xml</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>mvc</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>mvc</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>DruidStatView</servlet-name>

<servlet-class>

com.alibaba.druid.support.http.StatViewServlet

</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>DruidStatView</servlet-name>

<url-pattern>/druid/*</url-pattern>

</servlet-mapping>

步骤  4,在   WEB-INF目录中,新建  mvc-servlet.xml文件

<?xml  version="1.0"  encoding="UTF-8"?>

<beans  xmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"

xsi:schemaLocation="http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.1.xsd

http://mybatis.org/schema/mybatis-spring

http://mybatis.org/schema/mybatis-spring.xsd

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

<context:component-scan    base-package="com.it.ent.ctrl"/>

<mvc:resources   location="/WEB-INF/res/js/*"    mapping="/js/**"/>

<mvc:resources   location="/WEB-INF/res/css/*"    mapping="/css/**"/>

<mvc:resources   location="/WEB-INF/res/img/*"    mapping="/img/**"/>

<mvc:annotation-driven/>

<bean  id="viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property  name="viewClass"

value="org.springframework.web.servlet.view.JstlView"></property>

<property  name="prefix"   value="/WEB-INF/pages/"></property>

<property  name="suffix"   value=".jsp"></property>

</bean>

</beans>

步骤  5,在工程的    src目录下,新建spring-base.xml文件

<!--读取属性文件     -->

<bean  id="config"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property  name="location"   value="classpath:jdbc.properties"></property>

</bean>

<!--配置   druid数据源    -->

<bean  id="dataSource"   class="com.alibaba.druid.pool.DruidDataSource"

init-method="init"   destroy-method="close">

<!--基本属性    urluserpassword   -->

<property  name="url"  value="${url}"   />

<property  name="username"   value="${username}"   />

<property  name="password"   value="${password}"   />

<!--配置连接池初始化大小、最小、最大        -->

<property  name="initialSize"   value="1"   />

<property  name="minIdle"   value="1"  />

<property  name="maxActive"   value="20"  />

<!--配置获取连接等待超时的时间       -->

<property  name="maxWait"   value="60000"   />

<!--配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒           -->

<property  name="timeBetweenEvictionRunsMillis"      value="60000"  />

<!--配置一个连接在池中最小生存的时间,单位是毫秒         -->

<property  name="minEvictableIdleTimeMillis"     value="300000"   />

<property  name="validationQuery"    value="SELECT   'x' FROM  DUAL" />

<property  name="testWhileIdle"    value="true"  />

<property  name="testOnBorrow"   value="false"   />

<property  name="testOnReturn"    value="false"  />

<!--打开   PSCache,并且指定每个连接上   PSCache的大小     -->

<property  name="poolPreparedStatements"     value="false"  />

<property  name="maxPoolPreparedStatementPerConnectionSize"      value="20"  />

<!--配置监控统计拦截的    filters  -->

<property  name="filters"   value="stat"  />

</bean>

<!--扫描 service,自动生成    Bean-->

<context:component-scan    base-package="com.it.ent.service"     />

<!--配置   mybatis会话工厂    -->

<bean  id="sessionFactory"

class="org.mybatis.spring.SqlSessionFactoryBean">

<property  name="dataSource"   ref="dataSource"></property>

<property  name="configLocation"

value="classpath:mybatis-config.xml"></property>

</bean>

<!--自动扫描   mybatis映射接口,并生成实现类      -->

<mybatis:scan   base-package="com.it.ent.dao"     />

<!--配置事务管理器     -->

<bean  id="txMgr" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property  name="dataSource"   ref="dataSource"></property>

</bean>

<!--配置声明试事务     -->

<tx:advice  transaction-manager="txMgr"     id="txAdvice">

<tx:attributes>

<tx:method  name="add*"   propagation="REQUIRED"   />

<tx:method  name="create*"   propagation="REQUIRED"    />

<tx:method  name="remove*"   propagation="REQUIRED"    />

<tx:method  name="delete*"   propagation="REQUIRED"    />

<tx:method  name="modify*"   propagation="REQUIRED"    />

<tx:method  name="update*"   propagation="REQUIRED"    />

<tx:method  name="find*"   propagation="REQUIRED"    read-only="true"   />

<tx:method  name="search*"   propagation="REQUIRED"   read-only="true"   />

<tx:method  name="get*"   propagation="REQUIRED"   read-only="true"    />

<tx:method  name="*"  propagation="REQUIRED"    />

</tx:attributes>

</tx:advice>

<aop:config>

<aop:pointcut   expression="execution(*   *..service..*.*(..))"

id="txSrvMethod"   />

<aop:advisor  advice-ref="txAdvice"    pointcut-ref="txSrvMethod"   />

</aop:config>

步骤  6,在工程   src目录下,新建 jdbc.properties属性文件,用于配置数据库连接信息

driverClassName=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@localhost:1521:orcl

username=scott

password=tiger

步骤  7,在工程   src目录下,新建  mybatis-config.xml文件

<?xml  version="1.0"  encoding="UTF-8"?>

<!DOCTYPE  configuration   PUBLIC  "-//mybatis.org//DTD   Config  3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!--配置日志系统,采用    log4j作为日志工具     -->

<settings>

<setting  name="logImpl"   value="LOG4J"  />

</settings>

<!--配置别名     -->

<typeAliases>

<package  name="com.it.ent.entity"    />

</typeAliases>

</configuration>

步骤  8,新建   com.it.ent.entity包,并创建  Enterprise实体类

public  class Enterprise   implements  Serializable{

private  static  final long  serialVersionUID   = -8494899139939004344L;

private  String  ent_code;

private  String  ent_name;

private  String  logo;

private  String  loc;

private  String  addr;

/*省略 getter/setter方法和构造方法*/

}

步骤  9,新建   com.it.ent.dao包,并创建  IEnterpriseDao数据访问接口

public  interface  IEnterpriseDao   {

List<Enterprise>   searchEntList(Integer    begin,Integer  end);

}

步骤  10,在   com.it.ent.dao包中,新建 IEnterpriseDao.xml 接口映射文件

<?xml  version="1.0"  encoding="UTF-8"   ?>

<!DOCTYPE  mapper  PUBLIC  "-//mybatis.org//DTD   Mapper  3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper  namespace="com.it.ent.dao.IEnterpriseDao">

<!--企业列表数据分页查询语句,注意带排序的分页查询写法-->

<select  id="searchEntList"   resultType="enterprise">

SELECT  * FROM

(SELECT  t.*, ROWNUM  rn  FROM

(SELECT  ent_name,biz_lic,fnd_date

FROM t_ent_ent_base   t  ORDER BY  fnd_date)  t

WHERE  ROWNUM <=#{1})

WHERE  rn >  #{0}

</select>

</mapper>

步骤  11,新建   com.it.ent.service 包,并在包中新建 IEnterpriseService 业务接口

public  interface  IEnterpriseService   {

List<Enterprise>   searchEntList(Integer    begin,Integer  end);

}

步骤  12,在  com.it.ento.service 包中,新建  EnterpriseServiceImpl 业务实现

@Service

public  class EnterpriseServiceImpl    implements  IEnterpriseService{

@Autowired

private  IEnterpriseDao   enterpriseDao;

public  void setEnterpriseDao(IEnterpriseDao     enterpriseDao)   {

this.enterpriseDao   = enterpriseDao;

}

public  List<Enterprise>   searchEntList(Integer   begin,  Integer  end)  {

return  enterpriseDao.searchEntList(begin,     end);

}

}

步骤  13,新建   com.it.ent.ctrl包,并在包中新建  EnterpriseController 请求处理类

@Controller

public  class EnterpriseController    {

@Autowired

private  IEnterpriseService   enterpriseService;

public void  setEnterpriseService(IEnterpriseService     enterpriseService)   {

this.enterpriseService    = enterpriseService;

}

/**

*请求处理方法,访问   urlhttp://localhost:8080/ent/list/?pageNo=2

* @param  pageNo所需也页码

* @return模型数据和逻辑视图

*/

@RequestMapping({"/list"})

public  ModelAndView  list(Integer   pageNo){

Integer  begin  = (pageNo  - 1) *  Constants.PAGE_SIZE;

Integer  end =  begin +  Constants.PAGE_SIZE;

ModelAndView  modelAndView   = new  ModelAndView(ViewNames.ENT_LIST);

List<Enterprise>   list = enterpriseService.searchEntList(begin,  end);

modelAndView.addObject("entList",     list);

return  modelAndView;

}

}

步骤  14,在   WEB-INF/pages工程文件夹下新建 ent_list.jsp文件,展现企业列

表数据。(内容省略……

步骤  15,发布应用,并在浏览器地址栏输入http://localhost:8080/ent/list?pageNo=2

进行测试。

ok完成工程





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章