JavaWeb学习笔记——Servlet基础

本文是学习Java时所记录的学习笔记,本节Servlet的基础内容,包括基本简介和基本实现以及servlet相关的重要内容。只提取了部分我觉得是重点的内容,欢迎留言、私信交流~

Servlet简介

什么是Servlet?
  • Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器。
  • 主要功能在于交互式地浏览和生成数据,生成动态Web内容。
  • 是J2EE中13个功能模块之一
    • (常用)
      • Servlet web服务器小程序
      • JSP 服务器页面
      • JDBC 数据库交互模块
      • XML XML交互模块
    • (相对较少使用)
      • EJB 企业级Java Bean
      • RMI 远程调用
      • JNDI 目录服务
      • JMS 消息服务
    • (基本不使用)
      • JTA 事务管理
      • JavaMail 发送/接收Email
      • JAF 安全框架
      • CORBA CORBA集成
      • JTS CORBA事务监控

Servlet具体实现

配置Tomcat+JDK+Eclipse环境
安装Tomcat和JDK
  1. 安装JDK8
    • 官网:oracle.org
    • 下载JAVA 8版本
    • 如果是安装包,安装后即可使用。如果是压缩包,解压后,需要配置环境变量指向压缩后的位置。
    • 具体安装流程省略。(可以搜索“安装JDK教程”)
  2. 安装Tomcat 8.x(与JDK8对应版本)
在Eclipse IDE上关联JDK
  1. 打开Eclipse IDE。
  2. 点击“Windows”菜单,选择“Perferences”。
  3. 在左侧搜索“Installed JREs”并进入。
  4. 在左侧点击“Add”,选择“Standard VM”,点下一步。在“JRE home”处选择对应的JAVA文件位置。然后点击底部的“Finish”。
  5. 此时java和Eclipse绑定在了一起。
在Eclipse中关联Tomcat
  1. Windows菜单-Show View-找到Servers选项。
  2. 屏幕下方出现“Servers”标签。点击里面的链接。
  3. 弹出的界面中,选择Apache-对应的Tomcat版本。next
  4. 设置名称和tomcat安装路径,JRE选择对应的JDK。next
  5. 用于程序发布,可以不管。Finish
  6. 设置完成后,底部Servers标签会有对应的项目。双击内容。
  7. Server Locations模块修改为第二个“Use Tomcat installation(takes control of Tomcat installation”(意思为发布到Tomcat安装路径下)。修改Deploy Path为apache路径文件中的webapps文件中。关闭-保存。
  8. 验证:底部右侧的启动按钮。(推荐使用Debug启动)
  9. 验证:访问网页localhost:8080,能正常访问则表示成功。
创建JAVA WEB工程
新建项目
  1. 在eclipse,右键-new-Dynamic Web Project
  2. Project name:工程名称(例如:qqfh)
    • Target runtime:选择对应的apache Tomcat版本
    • next
  3. 不更改,next。
  4. 勾选“Generate web.xml deployment descriptor”,意思为生成web描述文件。finish。
创建标准Servlet
  1. 选择FirstServlet-Java Resources-src-右键-new-class
  2. Package:包名(例如:com.qqfh)
    • Name:类名(例如:qqfhController)
    • finish
  3. 继承父类:HttpServlet (import javax.servlet.http.HttpServlet;)
  4. 重写方法:Source-Override/Implement Methods…
    • 勾选service(HttpServletRequest,HttpServletResponse)
  5. 重写内容:
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接受请求发来的参数
        String category = request.getParameter("category");
        //指定返回给浏览器的内容
        String html = "<h1>hi,"+category+".";
        PrintWriter wr = response.getWriter();
        wr.println(html);//将指定的内容发送回浏览器
    }
    
  6. (如果执行这一步,就不用执行第7步)更新WebContent/WEB-INF/web.xml文件,添加内容:
    <servlet>
        <servlet-name>shopservlet</servlet-name>
        <servlet-class>com.qqfh.servlet.ServletProj</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>shopservlet</servlet-name>
        <url-pattern>/ShopSelvlet</url-pattern>
    </servlet-mapping>
    
  7. 使用注解的方式可以简化配置(这步和第6步只使用一种即可,如果执行第7步,则无需执行第6步)。在Servlet类的上一行添加@WebServlet注释即可。
    //引入包
    import javax.servlet.annotation.WebServlet;
    //在Servlet类的上一行添加以下注解
    @WebServlet("/ShopSelvlet")  //告诉tomcat映射的地址是ShopSelvlet
    
运行项目
  1. 右键底部Servers标签的内容-Add and Remove
  2. 选择左侧的项目,放到右边。(意思为发布)。finish
  3. 成功则底部会多一个项目。
  4. 点击底部Servers右侧的debug。
  5. 访问:localhost:8080/FirstServlet/hi?name=jackson

Servlet相关知识

Java Web标准工程结构
目录/文件说明
tomcat安装目录/webapps/Tomcat应用根目录
/web应用目录/JavaWeb应用目录
/web应用目录/index.htmljsp
/WEB-INFWEB应用安全目录,用于存放配置文件
/WEB-INF/web.xml部署描述符文件,是web项目核心配置文件。
/WEB-INF/classes存放编译后的classes文件
/WEB-INF/lib存放web应用依赖的jar文件
/MATE-INF/MAINFEST.MF包含Web应用的版本等信息
Servlet生命周期
  • 装载 - web.xml
  • 创建 - 构造函数
  • 初始化 - init()
  • 提供服务 - service()
  • 销毁 - destory()
请求的结构
  • HTTP请求包含三部分:
    • 请求行:请求方法、请求URL、HTTP协议及版本。
    • 请求头:辅助信息(语言、操作系统和浏览器、内容长度、cookie等)
    • 请求体:数据内容(POST请求才会有内容)
  • HTTP响应包含三部分:
    • 请求行:报文协议及版本、状态码及描述。
    • 请求头:辅助信息(内容信息、时间、内容长度等)
    • 请求体:数据内容
  • HTTP常见状态码:
    • 200 服务器处理成功
    • 404 无法找到文件
    • 500 内部服务器错误
    • 403 服务器拒绝访问
    • 301、302 请求重定向
    • 400 无效的请求
    • 401 未经过授权
    • 503 服务器超载或正停机维护,无法处理请求
  • 请求头中的ContentType
    • 服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
      说明
      text/plain纯文本
      text/htmlHTML文档
      text/xmlXML文档
      application/xmsdownload需要下载的资源
      image/jpeg图片资源
Servlet类详解
//重写service方法,可以同时处理GET和POST传进来的数据。
service(HttpServletRequest request, HttpServletResponse response){}
//重写doGet方法,用于专门处理Get请求的方法
doGet(HttpServletRequest request, HttpServletResponse response){}
//重写doPost方法,用于专门处理POST请求的方法
doPost(HttpServletRequest request, HttpServletResponse response){}


//以下在重写service、doGet或doPost方法后,在重写的方法内经常使用的一些语句。
//HttpServletRequest类的request对象常用方法如下
request.getParameter()  //接收request请求中的单个参数
request.getParameterValues()  //接收多个同名参数,返回String数组
request.getCookies()  //获取所有Cookie信息,返回一个Cookie数组。
request.getSession()  //获取用户会话的Session对象(HttpSession类型)
request.getServletContext()  //返回ServletContext对象
request.getRequestURL()  //获取当前访问的URL,返回StringBuffer对象,可通过toString转成String。
request.getMethod()  //获取传输方法(get/post)
request.getAttribute("username")  //获取请求中属性名为username的值,返回一个Object对象。
request.getHeader("User-Agent")  //获取User-Agent信息,返回字符串。
request.setContentType()  //设置文本信息(用于告诉浏览器内容是属于什么文本)
request.setAttribute("username","admin")  //设置一个请求属性名为username,值为admin
request.setCharacterEncoding("utf-8");  //设置Post请求的编码格式


//HttpServletResponse类的response对象常用方法如下
response.setContentType("text/html; charset=utf-8");  //设置响应的编码格式
response.addCookie()  //向浏览器写入,传入一个Cookie类型的对象


//极其常用的语句
//请求转发中浏览器只会发送一次请求,处理请求的Servlet1会在内部进行转发到Servlet2,再又浏览器2直接回应请求给浏览器,浏览器的地址栏会显示第一个请求的地址。
request.getRequestDispatcher().forward()  //请求转发
//响应重定向中浏览器发送一次请求后,处理请求的Servlet1会回复Servlet2的地址给浏览器,浏览器接收后再次发送一次请求给Servlet2,此时浏览器的地址栏会变为第二个请求的地址。
response.sendRedirect()  //响应重定向
Java Web三大作用域对象
  • HttpServletRequest 请求对象(Tomcat响应后就被销毁)
  • HttpSeesion 用户会话对象(默认30分钟未被访问就销毁)
  • ServletContext web应用全局对象(web应用程序重启或关闭会被销毁)
ServletContext
  • ServletContext(Servlet上下文对象),是Web应用全局对象,不会随着某一个session失效而消失。
  • ServletContext类对应的是内置对象application。
    • ServletContext类(javax.servlet)
      方法说明
      ttribute(“copyright”,“2018 baidu.com”)设置自定义全局属性
      ttribute(“copyright”)获取copyright属性的值,返回Object对象。
      nitParameter(“copyright”)获取应用程序全局属性copyright的值,返回String类型
web.xml配置说明
  • //设置servlet
    • //指定对应的java类名
    • //绑定URL。可以设置成“/pattren/*”,表示后面部分任意字符都可以处理。
  • //设置servlet映射
  • //设置欢迎页列表
    • //默认页面的文件名
  • //设置应用程序的全局参数
    • //参数名
    • //参数值
  • //指定错误页面
    • //指定错误代码
    • //指定对应的访问文件:例如“/error/404.html”
JSP九大内置对象
序号内置对象说明
1request请求对象-HttpServletRequest
2response响应对象-HttpServletResponse
3session用户会话-HttpSession
4application应用全局对象-ServletContext
5out输出对象-PrintWrtier
6page当前页面对象-this
7pageContext页面上下文对象-PageContext
8config应用配置对象-ServletConfig
9exception应用异常对象-Throwable(只能在错误页面isErrorPage="true"中使用)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值