B/S框架
ServletConfig,ServletContext
1.ServletConfig:Servlet的配置对象,容器在初始化Servlet时通过它传递信息给Servlet。
2.ServletContext:上下文对象,提供了一系列方法供Servlet与Web容器交互。
2、创建时机
- ServletConfig:在容器初始化Servlet的时候,并为其提供上下文初始化参数的名/值对的引用。
2)ServletContext:容器启动的时候,并为其提供Servlet初始化参数的名/值对的引用。
3、作用范围(可见性)
1)ServletContext:每个JVM中每个Web应用一个ServletContext。
2)ServletConfig:每个JVM中每个Web应用的每个Servlet一个ServletConfig。
所以ServletConfig=Servlet初始化参数,ServletContext=上下文初始化参数。
Servlet
1.实现上讲 servlet可以响应热河类型的请求,但绝大多数只用来扩展基于HTTP协议的web
工作模式
1.客户端发送请求至服务器
2.服务器启动并调用servlet,servlet根据客户端请求生成响应内容并传给服务器
3.服务器将响应返回给客户端
代码:
public class UserServlet implements Servlet{
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化参数方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("执行业务逻辑方法");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("摧毁servlet");
}
}
HttpServletRequest,HttpServletResponse
重定向:会改变地址栏;会使request中的数据丢失;属于两次请求,两次响应
转发:不会改变地址栏;可以保存request中的数据;属于一次请求,一次响应
Cookie、Session
Cookie:通过客户端记录信息;Cookie是用户请求服务器后,服务器发送给客户端的一个辨别标识,保存在客户端,当客户端再次向服务器发送请求时,会携带这个标识,服务器通过标识来识别客户端的身份或状态。一般用在保持用户登陆状态,记录用户名。
Session:通过服务器记录信息;session对象是第一次请求服务器时创建。
Filter、Listener
Filter:在servlet之前和之后都会被执行
应用:防止用户未登录就执行后续操作
设置编码方式
加密解密
非法文字筛选
下载资源的限制
实例代码:
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化登录过滤器");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("执行登录过滤器");
HttpServletRequest request= (HttpServletRequest) servletRequest;
HttpServletResponse response= (HttpServletResponse) servletResponse;
request.setCharacterEncoding("utf-8");
//登陆验证过滤器
String name= (String) request.getSession().getAttribute("name");
String requsetURI=request.getRequestURI();
if(requsetURI.endsWith("/")||requsetURI.endsWith("/login")||requsetURI.endsWith("/insert")||requsetURI.endsWith("insert.jsp")||requsetURI.endsWith("index.jsp")||requsetURI.endsWith("insertsuccess.jsp")||requsetURI.endsWith("inserterror.jsp")||requsetURI.endsWith("insertsuccess.jsp")||requsetURI.endsWith("yhmcf.jsp")||requsetURI.endsWith("message.jsp")||requsetURI.endsWith("login.jsp")||name!=null){
filterChain.doFilter(servletRequest,servletResponse);//读取下一个servlet或者filter
}else {
response.sendRedirect("message.jsp");
return;
}
}
@Override
public void destroy() {
System.out.println("销毁登录过滤器");
}
}
Listener:
事件源:request,session,servletContext
分类
按监听对象分:servletRequest,ServletContext,HttpSession
按监听内容分:监听域对象的创建与销毁,监听对象的属性变化
AJAX
是与服务器交换数据并更新部分网页的艺术,再不加载整个页面的情况下
核心:XMLHttpRequest对象
原理:相当于在用户和服务器之间加了一个中间层(AJAX引擎)使用户操作与服务器响应异步化。
$.ajax({
url:"testuname",
data:"uname="+uname,
type:"get",
dataType:"text",
success:function (result) {//通过参数来接受服务器返回的内容
$("#rs").html(result);
}
});
/*post方法
$.post("/testuname","uname="+uname,function (result) {
$("#rs").html(result);
});*/
//get方法
// $.get("/testuname","uname="+uname,function (result) {
// $("#rs").html(result);
// });
前后端分离
优点:提高工作效率,分工明确,增强代码的可维护性。