一、登录
前端输入用户名和密码点击登录,向服务器发送请求,Tomcat将将根据解析成一个HTTPServletRequest对象,根据请求信息定位到一个具体的Servlet,在Servlet层利用getParameter来获取前端数据(用户名和密码),获取到之后在数据库中查找此用户是否存在,然后判断它的密码是否正确,都正确了才能登陆成功,在dao层(数据库访问对象)中实现将用户名和密码传入dao层,根据sql语句在数据库查询,如果不存在或者密码错误都将登陆失败
二、如何维持登录
登录成功后,后端就会收到登录请求,就会自动创建一个session会话,用session里的setAttribute来保存登录用户信息,sessionId为key,HTTPSession为value,然后session会向浏览器返回一个set-cookie,浏览器就将里面的内容保存到本地,在下次访问浏览器时,会在请求头自动带上之前保存的cookie,利用HttpServletRequset的方法getSission()来获取当前会话,达到维持登录的状态
三、博客列表页
1.博客列表页的显示
登录进去后,然后在数据库查询都有哪些博客,显示在博客列表页,然后检查当前页面是不是已登录(用于注销后的情况),判断session存不存在,如果存在,先利用getSession获得当前会话,利用session中的getAttribute方法来获取指定对象,如果存在就说明已登录,如果比存在,说明未登录,只有已登录状态,才能发表和删除博客,不然只能看博客
2.博客列表页的构造
博客列表页的构造是利用Thymeleaf模板渲染来完成的,使用Thymeleaf模板渲染需要用到模板引擎TemplateEngine,先利用WebContext将要替换的数据收集起来传给引擎(TemplateEngine),然后利用WebContext中的setVariable设置键值对,对应前端的模板数据(特殊符号th:each="${替换数据}")进行替换,然后需要替换的数据就都存在WebContext中,最后利用TempaleEngine中的processs方法来进行渲染(某个页面),这样就把前后端的数据结合到了一起,达成动态效果
四、发表博客,
与之前一样,首先先检查是不是登录状态,如果已登录,利用getParameter获取前端数据,有主题和正文,然后将这篇博客插入数据库的博客表中,最后加一个sendRedirect重定向到博客列表页(只有主题和摘要)
五、查看博客(详细内容)
前端是由点击这个博客的主题来向后端传送数据的,还是利用getParameter来获取这篇博客对应编号,然后在数据库查找,如果博客存在,也是利用模板渲染将这篇博客详细信息返回给前端。
六、删除博客
先检查是否登录状态,前端点击删除,向后端传一个博客Id和当前用户Id,检查此篇博客作者是不是当前登录用户,如果是,删除数据库数据,如果不是,返回错误信息sendError,跳转到博客列表页
七、注销
如果是未登录状态,点击注销,检查当前会话是否存在,如果不存在,返回错误信息,存在,直接将当前用户从会话删除利用session中的removeAttribute删除会话中的用户,直接重定向到博客列表页,如果不登录就只能单纯的看博客了
八、注册
和前面一样,从前端获取数据,然后在数据库查询此用户名是否存在,如果存在,返回错误信息,如果不存在,就在数据库添加此用户信息,注册成功
九、模板设计
实现模板文件
通过Thymeleaf提供的特殊符号th:each="${}" 其中each表示循环变量,th:each会遍历${} ,每取出一个元素,就创建一个标签
项目中考点
一、Tomcat是什么?
Tomcat是一个应用程序,核心工作是处理Http请求和响应(怎么处理–通过操作系统内核中的网络协议栈) Tomcat在收到请求时,把这个请求解析成一个HTTPServletRequest对象,Tomcat根据请求信息会定位到一个具体的Servlet以及哪个方法,然后在这个Servlet层进行后端处理
二、前端和后端怎么建立联系的?
在后端Servlet,外层有一个注解@WebServlet里面的参数是一个相对路径,Tomcat收到请求中带的这个路径就会触发这个类的方法
三、post方法和get方法有什么区别?
相同:没有实质区别 ,GET 和 POST 只是 HTTP 协议中两种请求方式, 无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,没有区别 不同:Get方法会将提交的数据放在URL中,即以明文的方式传递参数数,所以不安全 Post方法会将提交的数据放在请求体中,所以是安全的 Get方法传递的数据量较小,最大不超过2KB,URL长度受限 Post方法传递的数据量较大,一般不受限制,大小取决于服务器 GET请求可以直接在地址栏输入url,但POST请求只能通过表单
四、PrapareStatement和statement有什么区别?
·PreparedStatement接口继承Statement 创建时的区别 ·PreparedStatement有预编译的过程,已经绑定sql,之后无论执行多少遍,都不会再去进行编译,而 statement 不同,如果执行多变,则相应的就要编译多少遍sql,所以从这点看,preStatement 的效率会比 Statement要高一些。 安全性问题 preStatement是预编译的,所以可以有效的防止 SQL注入等问题。所以 preStatement 的安全性 比 Statement 高
五、HttpServlet和Servlet的关系
HttpServlet是Servlet接口的一个实现类,主要负责的是http请求处理,覆写get,post或其他方法
六、Servlet是什么?有什么作用?
Servlet是运行在web服务器或应用服务器上的程序,作为客户端和服务器上的数据库或应用程序的中间层 作用:用于交互式的浏览和修改数据,生成动态web内容
七、Servlet生命周期?
调用init()初始化(只在第一次创建Servlet时调用一次) 调用service()处理客户端请求 调用destroy()方法终止(只在生命周期结束时调用一次) 最后由JVM的垃圾回收器进行垃圾回收
八、cookie
1.cookie是什么? cookies是存储在客户端计算机上的文本文件,并保留了用户的各种跟踪信息
2.cookie工作原理 客户端向服务器发起登录请求,服务器脚本向浏览器发送一组Cookies,浏览器将Cookies中的信息保存到本地,当下一次浏览器向服务器发送请求,浏览器会把Cookies保存的信息发给服务器,服务器借此来识别用户
3.cookis的作用 记录用户ID 记录用户密码 记录用户浏览信息
4.cookie的构成 Set-cookie头包含一个名称值对,一个GMT日期,一个路径和一个域(名称和值会被URL编码) servlet操作cookie常见方法 getName getValue setPath getPath等
九、session
1.session是什么? session是存储在服务器上的文本文件,并保留了用户的各种跟踪信息
servlet操作session的常见方法 getSession getAttribute setAttribute removeAttribute 等
2.判断会话存在的依据 SessionId,如果没有,创建sessionId,放入哈希表,同时把sessionId通过set-cookie返回给浏览器,客户端的后续请求,浏览器都会自动携带该Id,达到状态保持的效果
十、cookie和session的区别?
1.cookie一文本文件格式存储在浏览器中,而session存储在服务端 2.每次发起HTTP请求,都要携带cookie信息,一般大小都有限制,以防止增加网络压力,一般不超过4k 3.客户可以轻松访问cookie但无法轻松访问session,因为cookie对客户端是可见的,session在服务器上,对客户端是透明的,所以session方案更安全, 4.cookie中只保存字符串(键值对),session中能够存储任何类型数据
|