Java Web 学习笔记(3)

Servlet的层次结构

Servlet---->GenericServlet---->HttpServlet

HTTP请求有很多种类型,常用的有四种:

GET读取

POST保存

PUT修改

DELETE删除

GenericServlet实现Servlet接口,同时为它的子类屏蔽了不常用的方法,子类只需要重写service方法即可。

HttpServlet继承GenericServlet,根据请求类型进行分发,Get进入doGet方法,Post进入doPost方法。

开发者自定义的Servlet类只需要继承HttpServlet即可,重写doGet和doPost方法。

package com.janeroad.servlet;

import javax.servlet.*;
import java.io.IOException;

@WebServlet("/test")
public class MyServlet extends HttpServlet
{
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       resp.getWriter().write("GET");
     }

     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("POST");
     }
}

JSP

JSP本质上是一个Servlet,JSP主要负责与用户交互,将最终的界面呈现给用户,HTML+JS+CSS+Java的混合文件

当服务器接收到一个后缀是jsp的请求时,将该请求交给JSP引擎去处理,每一个JSP页面第一次被访问的时候,JSP引擎会将他翻译成一个Servlet文件,再由Web容器调用Servlet完成相应。

单纯从开发的角度来说,JSP就是HTML中嵌入Java程序

具体嵌入方式有3种:

1.JSP脚本,执行Java逻辑代码

<% Java代码 %>

2.JSP声明:定义Java方法

<%!
  声明Java方法
%>

3.JSP表达式:把Java对象直接输出到HTML页面中

<%= Java变量 %>
<%!
   public String test(){
   return "HelloWorld"
}
%>

<%
  String str =test();
%>

<%=str%>

JSP 的9个内置对象

1.request:表示一次请求,HttpServletRequest

2.response:表示一次相应,HttpServletResponse

3.pageContext:页面上下文,获取页面信息,PageContext

4.session:表示一次会话,保存用户信息,HttpSession

5.application:表示当前Web应用,全局对象,保存所有用户共享信息,ServletContext

6.config:当前JSP对应的Servlet的ServletConfig对象,获取当前Servlet的信息

7.out:向浏览器输出数据,JspWriter

8.page:当前JSP对应的Servlet对象, Servlet

9.exception:表示JSP页面发生的异常,Exception

常用的是:request、response、session、application、pageContext

request常用方法:

1.String getParameter(String key)获取客户端传来的参数

2.void setAttribute(String key,Object value)通过键值对的形式保存数据

3.Object getAttribute(String key) 通过key取出value

4.RequestDispatcher getRequestDispatcher(String path) 返回一个RequestDispatcher对象,该对象的forward方法用于请求转发

5.String[] getParameterValues获取客户端传来的多个同名参数

6.void setCharacterEncoding(String charset) 指定每个请求的编码

HTTP请求状态码

200:正常

404:资源找不到

400:请求类型不匹配

500:Java程序抛出异常

response常用方法:

sendRedirect(String path)重定向,页面之间的跳转

转发 getRequestDispatcher和重定向 sendRedirect的区别:

转发是将同一个请求传给下一个页面,重定向是创建一个新的请求传给下一个页面,之前的请求结束生命周期。

转发:同一个请求在服务器之间传递,地址栏不变,也叫服务器跳转。

重定向:由客户端发送一个新的请求来访问跳转后的目标资源,地址栏改变,也叫客户端跳转。

如果两个页面之间需要通过request传值,则必须使用转发,不能使用重定向。

用户登录,如果用户名和密码正确,则跳转到首页(转发),并且展示用户名,否则重新回到登录页面(重定向)。

# Java  JavaWeb  JSP 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×