简历项目
思路分析
对于小项目来说,页面 -> Servlet -> Dao -> 数据库 这样的模式就可以了,但是对于大项目来说,只有Servlet 和 DAO 是不太够的。
首先页面的话,可以在网上找到各种模板。
需要注意的是,在往项目中倒入静态页面这些资源的时候,路径的问题。很有可能,我们需要每个文件去手动修改路径。
正确做法是先把文件到放到webapp下,先不要分类建文件夹,然后再把这些文件放到分类文件夹中,IDEA会自动检查和修改路径。
区分一下前台和后台页面的路径:
http://localhost:8080/resume/education/admin
http://localhost:8080/resume/education/save
http://localhost:8080/resume/education/front
需要把下载的这些静态页面转化成JSP,让Servlet展示一下
jsp中动态获取ContextPath,不要使用相对路径。因为jsp可能是会被转发的。
!: try catch 里面有个带资源的就是 try 后面跟括号的。
Servlet部分:
思路是在BaseServlet中通过反射的方式拿到uri的最后一个字符串,然后就能拿到这个字符串对应的方法。
Website部分:
website就只有一个footer数据,主要是查询和更新这个数据
Education部分:
与website部分类似,但是日期处理部分有更多的细节。
就是日期类型的选择,如果仅仅只是展示日期,用String就行了,但是如果需要比较啊什么的,还是得用Date类型。
通过jsp的标签格式化日期
删除某条教育经验怎么做?
得给服务器发请求,之前是通过浏览器地址栏回车或者是一个submit按钮来提交表单的方式发送请求,那么还有什么给服务器发送请求的方式呢?
就是通过JS的一个内置函数:window.location.href = '${ctx}/education/remove?id=' + id;
怎么把Java对象转换成JS对象?
一个JavaBean对象要是让浏览器直接展示的话,会展示那个toString()之后的样子,所以得自己修改一下这个toString方法,让它返回一个JS对象就是键值对的形式。
但是还有一个问题是:项目里通常有很多的JavaBean对象,每一个都toString自己修改的话比较麻烦。
JSON字符串:所有key都必须用双引号包裹,就是比普通JS对象要严格一些,JS对象是不加引号或单引号或双引号都可以的
const obj = {
"name": "jack",
"age": 18
}
有很多第三方库可以把Java对象转成JSON字符串,比如Jackson或者FastJSON
这一部分之后最重要的是要再抽取一层出来即Service层。Servlet -> Service -> Dao -> 数据库
当项目比较大的时候Service层是有必要的,不然Servlet实际上是属于控制器层,那么控制器层中就包含了太多的业务代码了。
页面可见性:
禁止直接访问jsp页面,必须通过Servlet转发,放在WEB-INF下面
面向接口编程:非常重要
- 可以左边不用动,右边的实现可以改变,比如我想改变访问数据库的方式可以改变一个Dao的具体实现方式就行了,而原来使用Dao的代码都不用改。
甚至还可以使用配置文件加反射的方式来避免硬编码