Servlet的“初心”

在JSP技术出现之前编写服务器动态网页。有了JSP以后,不再使用Servlet编写动态网页,而是用来做控制器使用

ServletResponse增加返回内容_java

 

Servlet的“改变”

有了JSP之后,Servlet就不再用来生成动态页面,也就是很少在Servlet中写呕吐。print这样的代码,凡是需要输出动态内容的功能,都在JSP中实现。

Servlet的主要作用发生了变化:用来接收请求,处理请求,跳转到不同的JSP

因此,我们需要学习两个重要知识点:

  • Servlet如何获得JSP提交过来的请求数据?
  • Servlet如何跳转到不同的JSP?

理解请求对象

Servlet类的doXXX方法,都有两个参数,分别是
HttpServletRequest(请求)和HttpServletResponse(响应)

这两个类型都是接口
HttpServletRequest(请求)

public interface HttpServletRequest extends ServletRequest{}

 HttpServletResponse(响应)

public interface HttpServletResponse extends ServletResponse {}

请求的具体实现类是容器实现的,但是类型是统一的接口,即HttpServletRequest,因此,请求对象可以调用该接口及其父接口中的所有方法,可以查询API帮助文档。

HttpServleRequest接口中获得请求中数据的方法

  • 获得请求参数的方法
  • getParameter:通过name获得某请求参数的value
  • getParameterValues:通过name获得某请求参数的所有value,一般用于checkbox,或多选select等
  • 获得请求头的方法
  • 获得请求属性的方法
  • 获得其他信息的方法:如getRemoteAddr获得客户端的IP地址

获取请求参数

修改index.jsp中的表单,加入checkbox,checkbox的name都是style

登录设置:<br>
    <input type="checkbox" name="style" value="隐身">隐身登录<br>
    <input type="checkbox" name="style" value="音乐">音乐提醒<br>
    <input type="checkbox" name="style" value="短信">短信提示<br>

在FirstServlet中,加入代码获得名字为style的请求参数,由于可能多选,有多个style值,所以应该使用请求中的getParameterValues方法,返回字符串型数组

String[] styles=request.getParameterValues("style");
for(String s:styles){
out.println("登陆方式:"+s+"<br>")}

获取请求参数-总结

  • HttpServletRequest接口中有两个获取请求参数的方法
  • getParameter:返回一个String值,获得单值的请求参数
  • getParameterValues:返回一个String数组,获得多值的请求参数
  • 注意:这两个方法返回都是字符串,实际编程中,常常需要进行类型转换
    例如:使用Integer.parseInt转换成int,Double.parseDouble转换成double,Timestamp.valueOf转换成Timestamp等

Serlvet跳转到其他组件

两种跳转方式:

  • 响应重定向
  • 请求转发