欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb复习

程序员文章站 2022-06-14 23:03:32
...

JavaWeb复习

一、JSP

1. Java Server Pages

本质是 Servlet,

过程:JSP 转译成.java文件(Servlet),编译成.class 字节码文件,运行

2. 容器

Tomcat、Jboss、Weblogic、GlassFish、Websphere、Jetty

3. 七大元素

指令:page include taglib

HTML

表达式: <%=%>

声明: <%! %>

注释:<%-- --%>

动作: jsp:useBean jsp:setProperty jsp:getProperty

小脚本: <% %>

4.九大内置对象

域对象:pageContext、request、session、application

out、exception、page、response、config

pageContext.findAttribute() ----page request session application

2)request和 session:

HttpSession session = request.getSession(boolean);

true: 获取session,如果没有获取到,则创建session并返回,否则直接返回session对象。

false: 如果没有获取到,返回null,如果存在则返回session对象

ServletContext application = getServletContext();

  <session-config>
  	<!-- 单位:分钟 -->
  	<session-timeout>10</session-timeout>
  </session-config>
3) out 对象:

PrintWriter out = response.getWriter();

4) exception对象:

在JSP中默认是不能使用的。

如果要使用exception内置对象,则当前JSP页面必须是错误页面(isErrorPage=“false”)

注意:errorPage 和 isErrorPage

errorPage=“error.jsp” :指向错误页面,如果当前页面出现异常,则跳转到error.jsp页面处理

isErrorPage=“true|false”:设置当前页面是否为错误页面。

错误页面的配置:

<error-page>
  	<error-code>500</error-code>
  	<location>/scope/error.jsp</location>
  </error-page>
  <error-page>
  	<error-code>404</error-code>
  	<location>/notfound.jsp</location>
  </error-page>
5) config

用来获取web.xml文件中配置初始化参数

  <servlet>
  	<servlet-name>initjsp</servlet-name>
  	<jsp-file>/scope/count.jsp</jsp-file>
  	<init-param>
  		<param-name>initcount</param-name>
  		<param-value>100000</param-value>
  	</init-param>
  </servlet>
6) page

当前对象

7) session和cookie

session存储在服务器端,而cookie存在客户端

session实现需要cookie的保存jsessionid

cookie不安全,存储在客户端,文本形式,session在服务器,安全

cookie存字符串,session以对象存储

cookie存储大小有限 session相对大的数据

8) session失效情况

a.超时 (默认1800s )

b.销毁 invalidate()方法

c.关闭浏览器(本质超时)

5. get和post区别

a) get在地址栏传参,post隐式请求体方式传参

b) get不安全的,post安全

c) get传参长度有限的(不支持文件上传),post没有限制 (支持大文件上传的)

d.get可以用于收藏、邮件发送的url。

6. 两种跳转:重定向和转发

a) 地址栏:重定向改变,转发不改变

b) 请求:重定向发出两次请求 转发一次请求

c) 数据传递: 转发是可以共享request对象的数据的,而重定向不可以。

d) 跳转:重定向属于客户端的跳转 转发是服务器端跳转

7. 两种包含include

指令包含<%@include file =“include.jsp”%> 动作包含:<jsp:include >

a. 指令包含,转译时,进行合并成一个.java文件,编译.class 运行 ,同享一个pageContext对象

b.动作包含,各自转译 编译,执行时,调用。分别有两个不同的pageContext

二、Servlet

1. 生命周期

a、加载和实例化:构造方法—1次

b、初始化:init()方法----1次

c、服务:service() 方法----n次

d、销毁:destory()方法 —1次

2.加载和实例时间

a.默认情况下,第一次被请求,加载和实例化。

b.通过web.xml或注解,配置随服务器启动时加载和实例化

<load-on-startup>0</load-on-startup>

3. service() 和 doGet() 和doPost()

service()方法中获取request.getMethod(),提交表单的方法,判断去调用doPost()和doGet();

4. init() 和init(ServletConfig config)

1.如果有参,则其中初始化时,不再调用无参的init()方法

2.获取web.xml配置初始化参数,通过有参的init()方法 config.getInitParametere()

5. destory()方法

三、监听器

要自定义监听器,必须实现ServletContextListener、HttpSessionListener等监听,需要在web.xml中配置或使用@WebListener,才能起作用被容器所加载。

监听器在服务器启动时加载

  <listener>
  	<listener-class>com.wdzl.listener.GlobalListener</listener-class>
  </listener>

Session的绑定监听器

 class User implements HttpSessionBindingListener{
     @Override
	public void valueBound(HttpSessionBindingEvent event) {
		
	}
	@Override
	public void valueUnbound(HttpSessionBindingEvent event) {
		
    }
 }

四、 过滤器

1. 过滤器:

a. 自定义类,实现 Filter 接口。

b. 配置:两种方式:web.xml和注解

web.xml配置方式:

<filter>
    <filter-name>charsetFilter</filter-name>
    <filter-class>com.wdzl.filter.CharsetFilter</filter-class>
    <init-param>
      <param-name>charset</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>

注解:

@WebFilter(value = "/*",initParams = {@WebInitParam(name = "charset",value = "utf-8")})

public class CharsetFilter implements Filter {
}

2. 生命周期

四个阶段

加载和实例化:构造方法 一次

初始化:init() 一次

public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
}

过滤: 注意request和response类型 n次

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		chain.doFilter(request, response);
}

销毁:一次

	public void destroy() {
		// TODO Auto-generated method stub
	}

3. 启动加载时间

随服务器启动时加载和初始化的。

4. 过滤器链

通过配置多个过滤器,形成过滤器链,栈的方式请求和响应的。

过滤器放行:

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        //放行  调用下一个过滤器或请求的资源
		chain.doFilter(request, response);
	}

5.处理乱码

1.过滤器处理乱码,只能处理 post 请求乱码

​ request.setCharacterEncoding(“utf-8”);

2.get请求乱码:

转码:String str = new String(param.getBytes(“iso-8859-1”),“utf-8”);

修改tomcat配置:servet.xml中,URIEncoding=“utf-8”

3.常见问题:

a.处理乱码的提交方式是否为post

b.请求是否经过过滤器

c.提交的当前jsp页面的编码是否为utf-8

4.响应乱码

response.setContentType("text/html;charset=utf-8");