web基础第七、八天合:Servlet+Request+Reponse

Servlet

1.介绍

Servlet:是由SUN公司提供的一门动态Web资源开发技术(规范,接口)

静态Web资源:不同的人去访问看到的效果都是相同的

HTML/css/js等

动态Web资源:在不同的条件下看到的是不同的效果

Servlet/JSP/.NET/PHP等

Servlet本质上是一个Java程序,但和我们之前接触的Java程序不同的是,Servlet无法独立运行(Servlet种没有main函数),需要将Servlet程序放在服务器种,由服务器调用才可以执行。

运行在服务器种的Servlet程序作用是:对服务器接收的请求进行处理(处理请求)

2.开发Servlet程序

1.开发Servlet的步骤

1)写一个类,需要实现Servlet接口或者继承Servlet接口的子类

Servlet

​ —GenericServlet 实现了Servlet接口,并实现了其中的方法上

​ —HttpServlet 继承了GenericServlet,也实现了其中的方法

在开发时,我们只需要继承HttpServlet,并继承其中的方法即可!

2)配置web.xml文件

在web.xml文件中配置Servlet对外访问的路径,再将web应用发布到服务器即可!

2.Web项目在Eclipse中的目录结构

Web项目

​ src:其中用于存放java源文件,也可以存放配置文件(xml/properties)

​ build/classes:src源码目录中的的源文件经过编译后,回存放到classes目录下

​ WebContent:是Web应用的根目录,其中可以存放静态Web资源文件、编译后的class文件

​ 、Web应用所需要的jar包、web.xml等

​ WEB-INF

​ lib:Web应用所依赖的jar包

​ web.xml:web应用的核心配置文件(配置Servlet等)

3.通过Eclipse创建一个Servlet程序

步骤:src—new—Servlet

默认会继承HttpServlet,并重写doGet方法和doPost方法,两个方法的作用是:

doGet方法:当游览器发送请求的方式为GET提交时,将会调用doGet方法来处理请求

doPost方法:当游览器发送请求的方式为POST提交时,将会调用doPost方法来处理请求

4.运行Servlet程序

方法一:

若是第一次运行,需要先创建tomcat服务器,即在Servers窗口中点击链接可创

建一个tomcat服务器,且只需创建一次即可!

(1)发布项目到服务器:在服务器上右键 --> 点击 “add and remove” 将当前web项

目发布到服务器中,并点击完成。

(2)启动tomcat服务器:在服务器上右键 Start 即可启动服务器

(3)通过浏览器访问Servlet:打开本地浏览器,通过路径访问,即可访问Servlet程

方法二:

直接在要运行的文件(html/jsp/servlet等)上–>右键–>Run as–>Run on Server

eclipse会帮我们做如下几件事:

1)将Servlet所在的Web项目发布到服务器中

2)在启动tomcat服务器

3)最后打开游览器,在地址栏输入路径去访问这个Servlet

5.Servlet在web.xml文件中的配置(Servlet2.5或以下版本)

全限定类名(全类名):包名.类名 或者 包名.接口名

  <servlet>
    <description></description>
    <servlet-name>Hello</servlet-name>
    <servlet-class>com.tedu.Hello</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
  </servlet-mapping>

1)每创建一个Servlet,eclipse会帮我们生成至少8行配置信息

8行配置信息由一个servlet标签和一个sevlet-mapping标签组成
这两个标签中的<sevlet-name>标签中的内容一致,决定了它两是一组配置

2)

<servlet-class>标签中配置的当前Servlet类的全类名(包名.类名)
将来服务器根据访问路径找到这个全类名,再利用反射+全类名可以获取当前Servlet类的实例

3)

<url-pattern>标签中配置了外界该通过说明路径来访问当前Servlet
也就是说,这里配置什么路径,外界就得通过什么路径来访问这个Servlet

6.Servlet3.0或以上版本

在Servlet3.0的项目中,没有web.xml文件,无法通过xml文件配置Servlet信息,而是通过注解方法配置Servlet相关信息

@WebServlet("/…")

Request

1.Request和Reponse介绍

当游览器向服务器发送请求,服务器在调用Servlet的service方法处理请求之前,会创建代表请求的Request对象,和代表响应的Reponse对象。

将这两个对象传递给service方法,在service方法处理请求的过程中,如果要获取请求信息,可以通过request提供的方法进行获取。

如果要向游览器响应数据,可以将数据先写入到response缓冲区,等service方法执行结束后,服务器会自动到response对象中获取到要发送给游览器的数据,按照Http协议的格式将数据发送给游览器

2.Request常用功能

1.获取请求参数

请求参数:游览器在发送请求时,带给服务器的数据

request.getParameter(String paramName)--------返回String字符串

request.getParameterValues(String paramName)-------返回String[ ]数组

获取请求参数时出现的中文乱码问题:

在获取中文的请求参数时,可能会出现乱码问题(和请求方式、tomcat服务器版

本有关),具体可以分为以下情况:

(1)如果请求是GET提交,并且tomcat是8.0及以后的版本,GET提交的中文参

数,在获取时不会出现乱码问题!(8.0以后的tomcat包括8.0在获取GET提交的中文

参数时,已经处理中文乱码问题。)

(2)如果请求是POST提交,不管是哪个版本的tomcat服务器,在获取中文参数

时,都会出现乱码问题。因为tomcat底层在接收POST提交的参数时,默认会使用

iso8859-1编码接收,而这个编码中没有中文字符,所以在接收中文参数时,一定会出

现中文乱码问题!

解决方法是:通知服务器在接收POST提交的参数时,使用utf-8编码来接收!

request.setCharacterEncoding("utf-8");

注意:这行代码要放在获取参数的代码之前执行!

​ 这行代码只对POST提交生效,GET提交不受任何影响

2.实现请求转发

所谓的请求转发是服务器内部资源之间的跳转方式(从一个资源跳转到另外一个资源)

请求转发(forward)的特点:

​ 转发是一次请求一次响应

​ 转发前后地址栏地址不会发生变化

​ 转发只能在同一个Web应用内部两个资源直接按进行跳转

​ 在转发的两个资源之间可以利用request域(map)传递数据

请求转发的实现代码:

request.getRequestDispatcher("/TestForward2").forward(request,response);

3.作为域对象使用(需要配合转发)

在请求转发时,会将request对象传递给所转发的资源(A–转发–>B,会将A中的request传递给B)

可以在转发之前,往request的map中存入数据,在转发,由于转发时会将request带到所转发的资源

在转发的资源中,可以通过request将map中携带的数据再取出来

//在ServletA中,往request的map中存入数据
request.setAttribute(String name,Object value);
//请求转发到ServletB
request.getRequestDispatcher("ServletB的路径").forward(req.res);
//在ServletB中,可以通过request将map中的数据取出来
request.getAttribute(String name);

Response

1.Response常用功能

1.实现请求重定向

请求重定向(Redirect)的特点:

​ 重定向是两次请求两次响应

​ 重定向前后地址栏地址会发生变化

​ 进行重定向的两个资源没有限制,可以是同一个Web应用,也可以是不同的Web应用,甚至可以是不同的服务器

​ 在重定向的过程中不可以通过request的map集合带数据到目的地

//实现请求重定向
response.sendRedirect("所重定向到资源的地址");

2.实现定时刷新

response.getWriter().Writer("<h1>5秒后将会跳转</h1>");
response.setHeader("Refresh","5;url=.....");

定时刷新和重定向的特点几乎一致,唯一区别的就是,重定向(转发)都是立即跳转,中间没有任何时间间隔,定时刷新可以指定多少秒之后在进行跳转,在跳转之前,可以输出信息提示用户

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值