Servlet

网络程序两层CS:客户端+DB

网络程序三层CS:客户端+应用服务器+DB(其中,数据库负责数据的管理,应用服务器处理业务逻辑,客户端提供操作界面)

网络程序BS架构:Browser+Web Server +DB   优点在于:不需要安装客户端,用http协议进行通信。

Servelt:扩展Web服务器功能(早期Web服务器只能处理静态资源的请求,无法动态计算生成Html界面)的组件规范(实现部分功能,部署到容器中才能运行的软件模块)。

错误提示:404 , 405(Web服务器找不到service()方法处理请求) 500(程序运行过程中出错)

HTTP协议:HyperText Transfer Protocol定义浏览器与Web服务器之间如何通信和通信的数据格式。

请求:请求头(请求方式+请求路径+协议版本),消息头,请求内容(post请求时才有)

响应:状态行(协议类型+版本+状态码+状态描述)。消息头,实体内容。

当Web容器收到一个Http请求时,通信数据由Web容器进行封装和处理,这些信息被分为HttpServletRequest和HttpServletResponse

HttpServletRequest:读取和写入Http请求数据,取得和设置Cookies,标识http会话,实现请求转发

常用方法:

getHeaderNames()

getHeader(String name)

getMethod()

getRequestURI

HttpServletResponse:

设置响应码,设置Session,实现重定向,设置浏览器的解码方式,设置对客户端的输出结果。

常用方法:

setContentType(String type)           例如:response.setContentType("text/html;charset=utf8")

setCharacterEncoding(String charset)    例如:response.setCharacterEncoding("utf-8")

public class TestServlet extends HttpServlet{
    public void service(HttpServletRequest request,HttpServletResponse response)
            throws ServletException,IOException{
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.print("能够输出中文信息的Servlet");
        out.close();
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>testServlet</servlet-name>
        <!-- 类名要写完整,包含包名,注意大小写 -->
        <servlet-class>web.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>testServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>    
</web-app>

获取请求参数值得方法:

request.getParameter(name)

request.getParameterValues(name)

表单提交产生乱码:当表单提交时,浏览器会对中文参数值进行编码(表单所在页面的字符集进行编码).Web服务器默认情况下使用iso-8859-1去解码。

解决方法:表单所在页面进行编码:<meta http-equiv="content-type" content="text/javascript;charset=utf-8">--------------request.setCharcterEncoding("utf-8")

解决GET方式时的乱码问题:

设置页面编码,String name = request.getParameter("name"),name = new String(name.getBytes("iso-8859-1"),"utf-8")

返回页面出现乱码:设置response.setContentType("text/.html;charset=utf-8")

Servlet运行步骤:建立连接,请求数据打包,容器解析请求数据报封装成对象,根据web.xml中的配置找到Servlet的service方法,响应打包给浏览器,浏览器生成页面。

重定向:服务器向浏览器发送一个302状态码和Location消息头的响应,浏览器收到后向Location地址发送请求。

重定向:response.sendRedirect(String url)

特点:地址栏变化,不会共享request和response对象,地址任意。

<url-pattern>/*</url-pattern>

<url-pattern>*.do</url-pattern>

Servlet生命周期:实例化(创建Servlet对象),初始化(调用init方法),就绪(service()),销毁(destroy())

<init-param>
       <param-name>student</param-name>
        <param-value>kk</param-value>
</init-param>

获取:ServletConfig.getInitParamter("student")

Servelt接口

方法:init(),destroy(),service()

GenericServlet抽象类

方法:实现了init(),destroy()方法,service()没有实现

HttpServlet抽象类

方法:实现了init(),destroy(),service()

ServletContext:

获取方式:

1、GenericServlet的getServletContext()

2、ServletConfig的getServletContext()

3、HttpSession的getServletContext()

4、FilterConfig的getServletContext()

ServletContext上下文的作用和特点:

setAttribute(),removeAttribute,getAttribute()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值