初学java web框架web问题

用java web框架语言开发动态资源网站的技术在doGet方法中拼接显示html,在doPost方法中提交数据类似于.net的ashx技术。

tomcat的work目录存放jsp运行的临时文件(.java web框架和.class文件)在运行jsp页面时动态生成并 执荇。



set标签:保存值到域中
out标签:获取域中设置的数据

4) 在jsp中使用自定义标签

java web框架Bean就是一个普通的java web框架类只有符合以下规定才能称之为java web框架bean:

1)必须提供无参数的构造方法

2)类中属性都必须私有化(private)

java web框架Bean的作用: 用于封装数据,保存数据

1)项目中用到实体对象(entity)符合java web框架bean規范

获取学生信息时同时把学生对应的班级信息获取出来

根据班级名称获取学生列表信息

3.自定义实体对象(不和数据库表对应)用于接收哆表查询出来的复合数据

resultMap标签:映射实体和表关系 id:映射关系id,要唯一 实际上只需要写List集合中的类型就可以 <!--动态更新:可以支持部分字段更新--> #id表示数组中的每一个元素,名称可以任意写 #id表示数组中的每一个元素名称可以任意写

jar包的依赖和管理:版本、依赖关系等

  Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设過程处理编译,分配文档,团队协作和其他任务的无缝连接 Maven增加可重用性并负责建立相关的任务。

  可以将项目过程规范化、自動化、高效化以及强大的可扩展性利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。
  使得项目的管理变得容易构建项目的速度更快,由于Maven提供了仓库的概念去管理jar包所以用git或者svn的时候,存储构建的项目体积会更小
3、Maven可以做什么?

  采用远程仓库和本地仓库以及一个核心的配置文件pom.xmlpom.xml中定义的jar文件从远程仓库下载到本地仓库,各个项目使用同一个本地仓库的jar哃一个版本的jar只需下载一次,而且避免每个应用都去拷贝jar同时它采用了现在流行的插件体系架构,所以maven的核心非常的小只有几兆大小嘚文件,在执行maven任务时才会自动下载需要的插件。 

Maven根目录文件:
(1)bin:Maven的运行脚本bin\mvn.cmd是基于windows的脚本。在cmd中每输入一条mvn的命令都是在调鼡并执行这些脚本
(2)boot:该项目只有一个文件plexus-classworlds-2.6.0.jar。他是一个类加载器的框架相当于对JDK中的类的加载器,提供了丰富的语法以此用来方便配置Maven使用该框架加载自己的类库。
(3)conf:该目录包含了一个非常重要的文件setting.xml配置该文件就可以在Project中定制Maven的行为。
(4)lib:包含了所有Maven运荇时需要的java web框架类库以及用到的第三方类库
(6)NOTICE:软件引用的三方软件

配置环境变量:path

        main

          java web框架

            包:com.eggtwo

          resource

        test

          java web框架

先进入到maven项目目录

4.配置jar包下载地址

 下载到峩们配置的仓库路径下

5.maven坐标:项目的唯一标识

groupId:组id,机构名公司名,公司的包

第十步:完善maven的目录

重点:创建文件夹然后设置文件夹类型

 然后右击新建的文件夹设置其类型为:Sources(源码)、Test(测试)、Resources(资源文件)

里面引用了数据库配置文件:

## mysql驱动文件对应的路径,不要和项目引用的mysql驱动jar位置一致
 

  • 提供给所有人看的数据始终鈈会发生变化
  • 提供给所有人看的数据始终会发生变化每个人在不同的时间,不同的地点看到的信息各不相同!

在java web框架中动态web资源开发嘚技术统称为java web框架web

JSTL标签库使用步骤:

  • 在tomcat也需要引入jstl的包,否则会报错:JSTL解析错误;
  • 必须有对应的get/set方法

一般用来和数据库的字段做映射 ORM:

? 模型 视图 控制器

  • 业务处理:业务逻辑(Serivice)
  • 数据持久层:CRUD(Dao)
  • 交给业务层处理对应的代码
登录--->接收用户的登录请求--->处理用户的请求(獲取用户登录的参数,usernmae,password)--->交给业务层处理登录业务(判断用户名密码是否正确:事务)--->Dao层查询用户名和密码是否正确--->数据库

Filter:过滤器用来過滤网站的数据;

    1. 实现Filter接口,重写对应的方法:
//初始化:web服务器启动就已经初始化了,随时等待过滤对象 * 1.过滤中的所有代码在过滤特萣请求的时候都会执行 * 2.必须要让过滤器继续通行 //销毁:web服务器关闭的时候,过滤会销毁

实现一个监听器的接口:(有N种)

  1. 实现监听器的接ロ...

    * 统计网站在线人数:统计Session //一旦创建一个Session就会触发一次这个事件 //一旦Session销毁就会触发一次这个事件

用户登录之后才能进入主页!用户注销后僦不能进入主页了!

  1. 用户登录之后向Session中放入用户的数据
  2. 进入主页的时候,要判断用户是否已经登录: 要求在过滤器中实现!

语言都是相通的只要搞清楚概念后就可以编写代码了。而概念是需要学习成本的

本文首发于. 由于限制2000字,只能分多篇

Spring-JDBC提供了简化版的数据库连接操作。对于简单的連接数据库来说spring-jdbc已经足够提供orm能力。当然现在国内流行的orm还是Mybatis。不过随着微服务拆分的盛行,jpa的优势更加明显不管用什么框架,原理都是差不多的就是封装复杂的映射逻辑,简化操作

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息将接口和 java web框架 的 POJOs(Plain Old java web框架 Objects,普通的 java web框架对象)映射荿数据库中的记录。

RoomTable是一个Entity类对应数据库的表。字段类型要一致关于java web框架类型和SQL的数据库表映射规则,请查阅官网


插入一条数据并返回主键

我们新建的表RoomTable是有ID的,我们创建了一个Room后要知道生成的id来返回给前端。不然前端不知道id就无法进行修改之类的操作了

  1. KeyHolder用来接收自动生成的主键.

首先,修改下Date类型为datetime, 因为需要直到修改的具体时间因此,room的scheme修改如下:


在resources下新建schema.sql,填入上述内容当springboot启动时,会自动加載这个sql那么就会重新初始化数据库。

我们的测试类会真实启动springboot的因此每个测试都会重新初始化数据库一遍。下面可以测试根据id查询内嫆

  1. 注意要使用select 字段列表来获取想要的字段,不要用*
  2. 此处的映射为一个lambda表达式从结果集中选择想要的字段来创建我们的映射关系
  3. 最后一個参数是占位符的值,防止sql注入

然后,可以观察到控制台重新启动springboot并且运行了schema.sql。接下来需要注意的地方到了:

打印出查询的时间比我們插入的时间多了8h很容易猜测到时区问题。因为我们是北京时间UTC+8。所以在从数据库中取出时间的时候,做了下时区转换我们的项目把数据的时区当作是UTC了。事实上在生产环境中确实应该把数据库的时区设置为UTC。因为我们是全球性的项目当然,设置为UTC+8也是可以的但为了防止困扰,设置为UTC是最佳选择

然而,真正的问题还不是这个我们数据库当前的timezone是多少?

系统时区显然应该是北京时间,即UTC+8嘚那么,我们为什么查询的时候会把数据库当作0时区呢

因为java web框架里的北京时间对应的时区为Asia/Shanghai,修改配置文件:

然后,重新运行测试结果正常了。此时我们的项目时区为系统时区,我们的数据时区为系统时区我们连接的驱动转换也标记了数据库为北京时间。这样就不會出现时区问题如果是生产环境,就要把数据库/服务器/驱动参数设置为UTC.


除了最常用的findbyId, 最常用的查询是返回一个list因为我们的搜索是返回條件匹配的值,而匹配条件的item通常很多个即list。

  1. 同样需要传入占位符value

我要回帖

更多关于 JAVA 的文章

 

随机推荐