servlet

    科技2024-12-27  22

    Servlet:Server Applet的简称,是服务器端的程序(代码、功能实现),可交互式的处理客户端发送到服务端的请求,并完成操作响应。动态网页技术,JavaWeb程序开发的基础,JavaEE规范(一套接口)的一个组成部分。

    servlet作用

    接收客户端请求,完成操作。

    动态生成网页(页面数据可变)。

    将包含操作结果的动态网页响应给客户端。

    servlet开发步骤

    1.搭建开发环境

               将servlet相关的jar包配置到classpath中。

    2.编写servlet

          实现javax.servlet.Servlet

    重写5个主要方法

    在核心的service()方法中编写输出语句,打印访问结果

    3.部署servlet

              编译MyServlet后,将生成的.class文件放在WEB-INF/classes文件中

    4.配置servlet

               编写WEB-INF下项目配置文件web.xml

     <!--1、添加servlet节点-->   <servlet>       <servlet-name>MyServlet</servlet-name>     <servlet-class>com.qf.servlet.MyServlet</servlet-class>   </servlet>   <!--2、添加servlet-mapping节点  -->   <servlet-mapping>       <servlet-name>MyServlet</servlet-name>       <url-pattern>/myservlet</url-pattern>   </servlet-mapping>

    注意:url-pattern配置的内容就是浏览器地址栏输入的URL中项目名称后资源的内容

    Servlet核心接口和类

    在Servlet体系结构中,除了实现Servlet接口,还可以通过继承GenericServlet 或 HttpServlet类,完成编写。

    servlet接口的方法

    init(ServletConfig config)

    ServletConfig getServletConfig()

    service(ServletRequest req,ServletResponse res)

    String getServletInfo()

    destroy( )

    GenericServlet抽象类

    GenericServlet 使编写 Servlet 变得更容易。它提供生命周期方法 init 和 destroy 的简单实现,要编写一般的 Servlet,只需重写抽象 service 方法即可。

    HttpServlet类

    HttpServlet是继承GenericServlet的基础上进一步的扩展。 提供将要被子类化以创建适用于 Web 站点的 HTTP servlet 的抽象类。HttpServlet 的子类至少必须重写一个方法,该方法通常是以下这些方法之一: doGet,如果 servlet 支持 HTTP GET 请求 doPost,用于 HTTP POST 请求 doPut,用于 HTTP PUT 请求 doDelete,用于 HTTP DELETE 请求

    servlet的两种创建方式

    1.实现接口servlet

    2.继承HttpServlet(推荐)

    servlet配置:使用web.xml(servlet2.5之前使用)  使用注解(servlet3.0后支持,推荐)

    @WebServlet注解常用属性

    name: Serlvet名字 (可选)

    value: 配置url路径,可以配置多个

    urlPatterns:配置url路径 ,和value作用一样,不能同时使用

    loadOnStartup:配置Servlet的创建的时机, 如果是0或者正数 启动程序时创建,如果是负数,则访问时创建。 数子越小优先级越高。

    initParms:配置编码方式。initParams = {@WebInitParam(name = "encoding",value = "utf-8")}

    servlet应用

    request对象

    在Servlet中用来处理客户端请求需要用doGet或doPost方法的request对象

    get和post区别

    get请求

    get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连

    get方式明文传递,数据量小,不安全

    效率高,浏览器默认请求方式为GET请求

    对应的Servlet的方法是doGet

    post请求

    post方法是把提交的数据放在HTTP包的Body中

    密文传递数据,数据量大,安全

    效率相对没有GET高

    对应的Servlet的方法是doPost

    get请求收参问题

    产生乱码是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个统一的编码,之后就按照此编码进行数据的传输和接收

     get中文乱码

    在Tomcat7及以下版本,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。

    解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。

    Tomcat8的版本中get方式不会出现乱码了,因为服务器对url的编码格式可以进行自动转换。

    post中文乱码

    由于客户端是以UTF-8字符编码将表单数据传输到服务器端的,因此服务器也需要设置以UTF-8字符编码进行接收。

    解决方案:使用从ServletRequest接口继承而来的setCharacterEncoding(charset)方法进行统一的编码设置。

    request.setCharacterEncoding("UTF-8");

    response对象

    response对象用于响应客户请求并向客户端输出信息。

    解决输出中文乱码

    设置服务器端响应的编码格式

    设置客户端响应内容的头内容的文件类型及编码格式

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

    servlet执行流程

     

    Processed: 0.011, SQL: 8