javaweb

1.请求和响应
1.HttpServletResponse对象

他继承自servletResponse接口,用来封装HTTP响应消息,由于HTTP响应消息分为状态行、响应消息头、消息体三部分,因此,在HttpServletResponse中定义了状态行、响应消息头、消息体三部分;

2.setStatus(int status)方法

该方法用于设置HTTP响应消息的状态码,并生成相应代码行;默认会生成一个状态码为200的状态行;

3.sendError(int sc)方法

此方法出现了Error可想而知是来告知程序人员或者访客,这是个用来表示错误的状态码,404状态码表示找不到客户端请求的资源;

public void sendError(int code) throws java.io.IOException
public void sendError(int code,String message) throws java.io.IEOxception

4.getWriter()方法
在这里插入图片描述

该方法是用来获取字符,获取到的字符输出流对象为PrintWriter类型,由于PrinWirter类型的对象可以直接输出字符文本内容,因此,需要想输出内容全为字符文本的网页文档,需要使用 getWirter()方法;

2.HttpServletPesponse应用
2.1 解决中文输出乱码问题
1.创建Servlet
chapter04项目的cn.itcast.chapter04.response包中编写一个名为ChineseServlet的类,在该类中定义一个中文字符串,并施蓉HttpServletPesponse方法来解决乱码:
在这里插入图片描述

运行结果如下:
在这里插入图片描述

2.2实现网页定时刷新并跳转
1.创建Servlet

chapter04项目的cn.itcast.chapter04.response包中编写一个名为RefreshServlet的类该类使用response对象的setHeader()方法实现了网页的定时刷新并转跳的功能:
在这里插入图片描述

实验结果如下:
在这里插入图片描述

2.3实现请求重定向
在某些情况下,针对客户端的请求,一个Servlet类可能无法完成全部工作,这时,可以使用请求重定向来完成,所谓请求重定向,指的是Web服务器收到请求之后,可能由于条件的限制或者是不允许,不能访问当前请求URL所指向的Web资源,而是指定了一个新的资源路径来实现客户端重新发送请求;

(1)我们需要在我们chapter04项目下的WebContent目录下编写用户登录的页面login.html和登录成功的页面welcome.html;
在这里插入图片描述
在这里插入图片描述

(2)在 chapter04项目cn.itcast.chapter04.response包中编写一个名为LoginServlet的类,用于处理用户登陆的请求:
在这里插入图片描述

运行结果:
在这里插入图片描述
在这里插入图片描述

3.HttpServletRequest对象
在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息,由于HTTP请求消息分为请求行、请求头和请求消息体3个部分,HttpServletRequest接口定义了请求行、请求头和请求消息体的相关方法;

1.在chapter04项目的src目录下,新建一个名称为cn.itcast.chapter04.request的包,在包里新建一个名叫RequestLineServlet的类,编写一下程序:
在这里插入图片描述

运行结果:
在这里插入图片描述

由此可见该方法发送的请求信息;

3.2获取请求消息头的相关方法:

当请求Servlet时,需要通过请求头向服务器传递附加信息,比如,客户端可以接收的数据类型、压缩方式、语言等.为此,在HttpServletRequest接口中,定义了一系列用于获取HTTP请求文字头字段的方法;

在cn.itcast.chapter04.request的包,在包里新建一个名叫RequestHeaderServlet的类,编写一下程序:
在这里插入图片描述

4.HttpServletRequest应用
4.1获取请求参数

在实际开发中,经常需要获取用户提交的表单数据,例如,用户名,密码,电子邮件等,为了方便获取表单中的请求参数,在HttpServletRequest接口的父类ServletRequest中,定义了一系列获取请求参数的方法;

其中getParameter()方法用于获取某个指定的参数,而getParameter()方法用于获取多个同名的参数;

(1)在chapter04项目下的WebContent目录下编写一个表单文件form.html;
在这里插入图片描述

(2) 在cn.itcast.chapter04.request的包,在包里新建一个名叫RequestParamServlet的类,编写一下程序:

package cn.itcast.chapter04.requset;
 
import java.io.IOException;
import java.util.Arrays;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class RequestParamServlet
 */
@WebServlet("/RequestParamServlet")
public class RequestParamServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RequestParamServlet() {
        // TODO Auto-generated constructor stub
    }
 
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println("username:"+username);
		System.out.println("password:"+password);
		
		String[] hobbys = request.getParameterValues("hobby");
		response.getWriter().print("hobby:"+Arrays.toString(hobbys));
	}
 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("utf-8");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println("username:"+username);
		System.out.println("password:"+password);
	}
 
}
    程序运行结果如下:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值