servlet

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执行流程

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值