Try acquired
1.在开发项目的过程中,你会把哪些功能放在Controller层?哪些功能放在Service层?你是怎么去判断的?没有Service层也可以讲所有代码放在Controller中啊
- V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。
- M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
- C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
- 经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。
- Servlet 容器能够重写客户请求的 URL,把 Session ID 添加到 URL 信息中,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session。
- 该方法的实现机制为:
- 先判断当前的 Web 组件是否启用 Session,假如没有,直接返回参数 url。
- 再判断 客户端浏览器 是否支持 Cookie,假如支持,直接返回参数 url;假如不支持 ,就在参数 url 中加入 Session ID 信息,然后返回修改后的 url。
- 还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址可以被Bookmark(书签),而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的,而POST没有。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL传递,POST放在Request body中。
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
- 容易计算:从原数据计算出MD5值很容易。
- 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
- 强抗碰撞(安全性):已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
-
- 散列算法,类似的有SHA-1(SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。)
-
- 加密算法有对称加密与非堆成加密,对称加密即加密与解密有相同的密钥,非对称加密有公钥与私钥,二者皆可用于加密,其中之一用于加密,需要用对应的另一者解密
- forward(转发):
- 是服务器内部的重定向,服务器直接访问目标地址的 url网址,把里面的东西读取出来,但是客户端并不知道,因此用forward的话,客户端浏览器的网址是不会发生变化的。
- 关于request: 由于在整个定向的过程中用的是同一个request,因此forward会将request的信息带到被重定向的jsp或者servlet中使用。
- redirect(重定向):
- 是客户端的重定向,是完全的跳转。即服务器返回的一个url给客户端浏览器,然后客户端浏览器会重新发送一次请求,到新的url里面,因此浏览器中显示的url网址会发生变化。
- 因为这种方式比forward多了一次网络请求,因此效率会低于forward。