Struts Spring 实现 JSP 读取数据库

一、构建 MVC

1. 新建 Model 文件,名为 Counter.java 位于 com.*.model package 下; 

    文件中各属性和方法对应 MySQL 数据库中的 counter 文件的各列,及对应的 get/set 方法;


2. 新建 dao 文件, interface 文件 CounterMapper.java, 位于 com.*.dao package 下;

    文件中包含各抽象方法,对应 CounterMapper.xml 中的 id=" " (详见3),如:

    int selectByKey(Counter c);   <->   <select id="selectByKey" parameterType="com.*.model.Counter"> ...</select>


3. 新建 sqlmap文件,直接操作 DataBase 的文件 CounterMapper.xml, 位于 com.*.sqlmap package 下;

    利用 SQL(MySQL) 语句操作数据库 - insert/ update/ delete,如下:

<sql id="column_list">id, name, count</sql>      //定义数据库模型,对应 DataBase 中的各列

<resultMap id = "Map1">...</resultMap>     // 对应 DataBase 各列cloumn name、type等详细信息  - 若有多种返回类型,可以设置多个resultMap;

<select id = "selectByKey" resultMap="Map1"/ resultType="Integer" parameterType="java.lang.Integer"/"map"/"com.*.model.Counter">

    SELECT COUNT(DISTINCT name) FROM counter 

    WHERE true

    <if test="name != null and name!=''" >

       AND name = #{name,jdbcType=VARCHAR}

    </if>

    limit #{start, jdbcType=INTEGER}, #{number, jdbcType=INTEGER}    // start, number 为页面显示时,起始编号和总数量。

</select>

>> resultMap/ resultType: 规定返回类型,必须和 CounterMapper.java 对应的返回值类型一致;

>> parameterType: 用于规定 java 中传递过来的数据类型;

>> jdbcType: 规定 SQL 语句中 Database 中的数据类型;


二、structs 中的 Action - @Controller 用于标注控制层组件

1. structs.xml 中配置各个 action,对应执行的 Action 类和方法,以及 result 处理;

2. 新建 Action 类,用于 JSP 跳转到 Java 中执行对应的操作,如 CounterAction.java;

  >> CounterAction 类,必须在 action.xml 文件中注册成 bean,指定对应的class文件路径和 property 属性(指明此 Action 中用到的 Service )

<bean id="counterAction" class="com.*.action.CounterAction" scope="prototype">

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

</bean>    

//scope:默认是单例模式,每次访问的都是同一个 Action 对象,因此数据不安全,struts2 要求每次访问都对应不同的 Action,设置 scope="prototype" 每次请求时,都创建一个 Action 对象;

3. CounterAction 中需要 JSP 文件传递的参数时(如 date),必须在 CounterAction 中设置 set/get 方法,否则无法获取;

4. CounterAction 需要通过 service 访问

注: applicationContext.xml:  <import resource="classpath: action.xml"> ( 配置文件,详见三.3 )

    action.xml: 注册 bean 和 service 的文件)


三、新建 CounterService  -- structs 通过 service 调用 MVC

@ Service -- 自动装载

public class CounterService {

    @ Autowired private CounterMapper dao;

     ...

}

1. @Service -- 服务层组件,业务层

@Service 是 Spring 框架的一个注解,表示这是一个 bean,[ 在 action.xml 中配置 bean id="CounterService",不必再 Spring 中配置 bean,自动根据 bean 的类名进行实现化为首字母小写counterService ];通常用于标注一个业务处理类;

2. @Autowired    - @Repository 持久层组件,用于标注数据访问组件,Dao 组件

>> @Autowired: Spring 框架中的注入方式,表示把 DAO 实现类注入到 service 实现类中;

>> @Autowired 不需要设置 get/ set方法,Spring 会自动注入;

3. 注解

applicationContext.xml - 

    <context: annotation-config/>             // 注释的方式配置 bean

    <context:component-scan base-package="com.*"></context:component-scan>      //扫描包

    <import resource = "classpath: action.xml" />  // Spring 配置文件中导入 structs 的配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值