OA中总结:s:select,关于使用modelDriven,项目分层,@Transactional,jspf,各个层上配置注解交给spring管理的方法,简单的OGNL表达式写法

简介: %<s:select> list:需要进行迭代的list集合 listKey:需要提交的值 listValue:需要在页面上显示的值============================优化1.ActionAction中存在重复的代码 从DepartmentAction/RoleAction/UserAction中抽取一个公共的BaseAction. 1.BaseAction中使

%
<s:select>
 list:需要进行迭代的list集合
 listKey:需要提交的值
 listValue:需要在页面上显示的值
============================
优化
1.Action
Action中存在重复的代码
 从DepartmentAction/RoleAction/UserAction中抽取一个公共的BaseAction.
 1.BaseAction中使用泛型,泛型的具体类型(Class)通过在构造方法中得到.
 如果model为null,就用具体类型newInstance()生成model.为什么model可能不为null?

2.Dao和Service==>3层改成两层
去掉dao层的具体的实现类xxxDaoImpl.而让service直接操作数据库
 service中直接使用session对数据库进行操作.
 1.service接口可以继承BaseDao
 2.ServiceImpl可以继承BaseDaoImpl
 注意:在BaseDaoImpl上添加@Transactional注解

 @Transactional可以被继承
 如果没有这个注解,在调用getCurrentSession()获取session时,会报错:
  No Hibernate session bounded to ...

3.jsp
 /WEB-INF/jsp/public/common.jspf
 1.抽取公共的js文件生成公共的common.jspf,然后在页面中用<%@ include file="/WEB-INF/jsp/public/common.jspf"%>调用(静态包含和动态包含)
  common.jspf中除了包含公共的js外,还包含公共的自定义标签的导入
 2.addUI.jsp和editUI.jsp==>改成save.jsp
 一般情况下,添加页面和修改页面可以使用同一个.
  1.<s:hidden name="id"/>
  2.<s:form action="departmentAction_%{id == null ? 'add' : 'edit'}"/>
  最后修改struts.xml中<result>对应的jsp页面

==================================================
完成增删改查功能的步骤
一、做action相关的准备
 1.创建xxxAction extends BaseAction
 2.定义出Action中的方法,要写出方法名、作用、返回值
 3.创建出所用到的jsp页面(内容先不写)
 4.配置:
  1.Spring==>在xxxAction上添加注解@Controller和@Scope
  2.Struts2==>在struts.xml中添加
  <action name="" class="" method="">..</action>
二、做service相关的配置
 1.创建接口XxxService继承BaseDao
 2.创建实现类XxxServiceImpl继承BaseDaoImpl
 3.配置:在XxxServiceImpl上添加注解@Service
 4.声明:在BaseAction上声明各个service作为成员变量,并在变量上添加注解@Resource
三、填空
 1.Action方法
  .......
 2.新增的的Service方法
 3.jsp页面的内容
  1.拷贝静态页面中的方法到jsp中
  2.<%@ include file="/WEB-INF/jsp/public/common.jspf"%>
  3. ../替换成${pageContext.request.contextPath}/
  4.改页面内容(使用自定义标签)
   1.列表页面
   <s:iterator value="..">
   <s:a action=".." onclik="">
   注意:onclick中的c小写
   2.表单页面(saveUI.jsp)
   <s:form action="departmentAction_%{id==null?'add':'edit'}">
    <s:hidden name="">
    <s:textfield>
    <s:textarea>
    <s:select name="" list=".." listKey=".." listValue="..">
    <s:radio name="gender" list="#{'男':'男','女':'女'}" listKey="" listValue="">
     其中:#{'男':'男','女':'女'}可以简写成#{'男','女'}
    <s:checkbox>
    <s:submit>
   </s:form>

   <select multiple="true" size="10">对应的struts标签
   <s:select name="" mutiple="true" cssClass="" list="#roleList" listKey="id" listValue="name">

未完成的任务
 // TODO
 Tasks

目录
相关文章
|
3天前
|
Java 开发者 Spring
Spring Framework 中的 @Autowired 注解:概念与使用方法
【4月更文挑战第20天】在Spring Framework中,@Autowired 注解是实现依赖注入(Dependency Injection, DI)的一种非常强大的工具。通过使用 @Autowired,开发者可以减少代码中的引用绑定,提高模块间的解耦能力
27 6
|
11天前
|
SQL Java 数据库连接
(自用)Spring常用配置
(自用)Spring常用配置
15 0
|
25天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
54 1
|
1天前
|
Java 开发者 Spring
深入理解Spring Boot的@ComponentScan注解
【4月更文挑战第22天】在构建 Spring Boot 应用时,@ComponentScan 是一个不可或缺的工具,它使得组件发现变得自动化和高效。这篇博客将详细介绍 @ComponentScan 的基本概念、关键属性及其在实际开发中的应用。
12 4
|
4天前
|
存储 安全 Java
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
13 0
|
4天前
|
安全 Java 数据库
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(上)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)
28 0
|
5天前
|
安全 Java Spring
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
18 0
|
5天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
12 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
11天前
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
18 1
|
11天前
|
XML Java 数据格式
进阶注解探秘:深入Spring高级注解的精髓与实际运用
进阶注解探秘:深入Spring高级注解的精髓与实际运用
26 2