web开发基础
web开发:所谓web开发就是基于浏览器服务器的开发
下面将web开发基础知识作个总结:
1.http协议:是建立在TCP协议上的,基于请求响应的模型
2.http请求:
面试题:说说get与post的区别
a.传递数据量:
get只能传递1kb以下的数据,post可以传递大数据
b.安全性:
get请求,如果携带参数,参数会直接显示在浏览器上,而post不会
所以post请求会更安全
c.get请求,有请求参数,参数是在请求行的资源路径上
post请求,请求参数在请求正文中,这就解释了第二条,为什么post请求更安全
开发中,如果请求响应的是页面,则一般用get请求,不需要携带参数
如果需要传递数据参与计算,或者js中的请求等等,常需要数据的交互,则使用post
开发中常常使用chrome查看请求响应的内容,作调试
3.servlet:
web开发的核心java类,主要功能是接收浏览器的请求(数据),内部作相关运算,给出响应
编写Servlet类:
public class LifeServlet implements Servlet{ @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { //接收请求,响应,类似于控制层的代码 //这里请求,响应是可以自己设置的,自己设置请求头,请求体,响应头,响应状态,响应内容 } }
4.request,response
当服务器接收到请求后,请求信息就会封装到request对象中,服务器给出响应后,响应信息就会封装到response中
request的生命周期:
接收请求时创建,产生响应后就会销毁,只存在一次请求响应之间
注意:
从Servlet跳转到jsp不算响应结束了,因为request域对象在jsp中还是可以用的,这是jsp的内置对象,后面会讲到
应该这样说,从Servlet跳转到jsp,数据被jsp解析(el表达式各种)显示出来了,这样才算响应了,才是一次完整的请求响应
那么程序是怎样从Servlet跳转到jsp的呢?
两种方式:请求转发和重定向
它们的区别是什么?
先看看继承HttpServlet后重写的doPost方法(写Servlet的另外一种方式,该方法相当于service方法)里面的一块代码:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ....... //请求转发 //将学生列表设置到requet中 //request.setAttribute("student_list", studentList); //转发是在服务器端转发的,客户端是不知道的 //request.getRequestDispatcher("/student_list.jsp").forward(request, response); //重定向 //将studentList放到session中 HttpSession session = request.getSession(); session.setAttribute("student_list", studentList); response.sendRedirect(request.getContextPath() + "/student_list.jsp"); }
说明:
请求转发是一次请求响应,转发发生在服务器内部,所以在这期间,requet域数据是共享的,所以可以数据可以存在requet域中,然后转发
重定向实际上是一次请求响应,然后再一次请求响应,这样显然数据不能存在requet域中,可以存在session中,然后重定向
为什么可以存在session中,涉及到session保存数据的周期,后面会讲到
请求转发在服务器端完成的,重定向是在客户端完成的
请求转发的速度快,重定向速度慢
因为是一次请求,所以请求转发地址栏没有变化,而重定向地址栏会发生变化
请求转发必须在一台服务器下完成,重定向可以在不同服务器下完成
5.cookie与session
这是浏览器的会话技术
什么是会话:就是打开浏览器到关闭浏览器就是一次会话
cookie是什么?
可以这样理解:
当浏览器请求服务器的时候,服务器会创建cookie(里面存储的访问数据)
然后在响应的时候,将cookie发送给浏览器,最后在浏览器保存
默认情况下:cookie的生命周期是一次会话,也就是关闭浏览器就没了
可以使用方法,让cookie持久化(时间),让其关闭浏览器还存在,这有什么用?后面会讲到
session:
session是服务端的会话技术,但是session的实现依赖cookie
默认情况下:session的生命周期也是一次会话.
这就解释了为什么在关闭浏览器后,再次打开时又要重新登录了(登录信息存在session 中)
依赖cookie,这也解释了为什么在浏览器清楚缓存后,也是要重新登录页面的
在tomcat/conf/web.xml文件中有一段配置了如果session如果在30分钟没有使用就会销毁,这是可以更改的
6.jsp的九大内置对象
就是直接可以在jsp上使用的对象,包括request域对象,session域对象等
其实jsp本质上是个特殊的servlet,就是为了接收数据显示数据
接收数据,数据可以存在域对象中,也可以存在封装好的javaBean中
显示数据,各种el表达式,jq前端框架
工作中session域中存放:用户信息,用户角色,对于模块
存用户角色是为了权限控制,在前端判断按钮的显示等等