发表于: 2018-02-23 22:50:47
3 605
今日完成:
1. EL表达式(Expression Language)
EL都是以${为起始、以}为结尾的
EL 提供.和[ ]两种运算符来导航数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex}等于${sessionScope.user["sex"]}
. 和 [ ] 也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
回传结果为shoppingCart中第一项物品的价格。
不过,以下两种情况,两者会有差异:
(1) 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],
例如:${user.My-Name } 上述是不正确的方式,应当改为:${user["My-Name"] }
(2) 我们来考虑下列情况:
${sessionScope.user[data]}
此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};
假若data 的值为"name"时,它就等于${sessionScope.user.name}。
因此,如果要动态取值时,就可以用上述的方法来做,但. 无法做到动态取值。
EL 变量
EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,
再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,
但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。
属性范围(jstl名称) | EL中的名称 |
Page | PageScope |
Request | RequestScope |
Session | SessionScope |
Application | ApplicationScope |
2. 分析前端页面
个人理解:静态页面不需要从数据库中读取数据,页面内容长时间保持不变。
动态页面需要实时从数据库中读取数据进行展示,通过特定的条件或者根据不同用户需求能够在同一页面显示不同内容。
通过数据库中对学员表格设置判断是否结业以及描述工作情况
职业分为5种方向,并且每个方向下还有不同职业细分
表示的门槛和难易程度的图片重复,web页面是直接多次引用图片,
我想到的办法是通过储存数值,然后再jsp页面进行循环语句
一个师兄是直接对图片进行修改,设置不同图片进行引用
在学人数与主页上统计累计线上学习人数方法一致
3. 通过以上分析,数据库需要学员、职业以及薪资待遇三张表
在这个task中,学员职业与职业介绍直接并没有联系,所以不设置外键
navicat新建数据库
student表
evaluate用来评价优秀等级,判断是否显示到主页上
profession表
salary表
4. 使用mybatis-generator自动生成工具
添加依赖
添加插件
在resources文件夹下编写generatorConfig.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry location="D:\maven\repository\mysql\mysql-connector-java\5.1.35\mysql-connector-java-5.1.35.jar"/>
<context id="testTables" targetRuntime="MyBatis3" >
<commentGenerator>
<!-- 是否去除自己主动生成的凝视 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<!--<jdbcConnection driverClass="${jdbc.driver}"-->
<!--connectionURL="${jdbc.url}"-->
<!--userId="${jdbc.username}"-->
<!--password="${jdbc.password}">-->
<!--</jdbcConnection>-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/taskfour?characterEncoding=UTF-8"
userId="root"
password="">
</jdbcConnection>
<!-- 默认false。把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="org.wyq.task.pojo"
targetProject="src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="org.wyq.task.mapper"
targetProject="src\main\resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="org.wyq.task.mapper"
targetProject="src\main\java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="salary"></table>
<!-- 有些表的字段须要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
运行
结果
明日计划:
1. 将静态页面部署到项目
2. 将静态页面转化为动态页面
3. 学习Tiles
遇到的问题:
1. Maven:Failed to create a Maven project ‘…pom.xml’ already exists in VFS
由于我们在同一个目录中创建了Project Name相同的项目导致的。因为在同,一目录下不能创建两个Project Name相同的Project。
问题的真正原因是原先的那个Project其实还是在我们的电脑上,即VFS虚拟文件系统,最终的解决办法就是清空废纸篓或者删除在废纸篓中的原Project。这样以后,我们就可以在同一个目录中创建相同名字的Project了。
2. 图片重复输出是否是在数据库中用数值记录
3. 官网上薪资不同工作经验和待遇,并且占用的空间大小可以自适应
对下载的web页面进行修改(直接删除2-5年的这个div)无法到达这个效果
4. 查看多位师兄的日报,都将下面的内容做了动态处理
我感觉好像作为动态的用处不大啊
收获:
1. 设计DB满足静态页面需求
2. 使用mybatis-generator自动生成工具
评论