JavaWeb五--Servlet

req和resp常用的方法

req:

 1. setAttribute()                           在Request域中存储数据
 2. setCharacterEncoding()         设置请求参数的编码方式,只对post请求有效
 3. getMethod()                            获取请求类型
 4. getParameter()                       获取指定请求参数值
 5. getParameterNames()            获取所有请求参数,返回一个Enumeration枚举类
 6. getAttribute()                           获取域中存储的数据
 7. getAttributeNames()               获取域中所有数据,返回一个Enumeration枚举类
 8. getContextPath()                    返回当前WEB项目相对路径
 9. getCookies()                           获取所有Cookie,返回一个Cookie数组
 10. getRequestDispatcher()       获取转发器,参数路径以/打头,代表WebRoot(当前WEB项目根目录)
 11. getSession()                         获取Session对象

resq:

1. setContentType()                   告知浏览器数据类型
2. setCharacterEncoding       设置Response的编码方式
3. setHeader()                       设置消息头
4. setStatus()                       设置状态吗
5. addCookie()                     添加Cookie
6. sendRedirect()                重定向
7. getOutputStream()         获取通向浏览器的字节流(同一次请求处理中,字节流和字符流不能同时存在)
8. getWriter()                        获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能同时存在)





1. 编写一个雷实现Servlet接口

2. 实现service方法,处理请求并响应数据


3. 到web.xml中去配置servlet程序的访问地址

约定大于配置


通过 /hello 访问HelloServlet,执行service方法

 

 

访问ip地址,访问Servlet程序




 



Servlet注解配置






 

创建一个表单(提交按钮)action传入访问servlet程序的url

当启动tomcat实例,通过url中访问a.html页面,点击提交,访问servlet程序
==》==》返回结果

可以通过servlet的实现类对象中方法servle() , 参数 servletRequest,转换为子类httpservletRequest,getMethod获取请求方法

 

实现Servlet程序,一般通过继承子类HttpServlet,操作doGet、doPost方法



直接实现Servlet接口的,去实现Servlet程序,就使用service方法执行操作

        
继承了Servlet实现类,去实现Servlet程序,就使用doGet、doPost方法执行操作

 

自动创建继承HttpServlet的类


重写doPost、doGet方法

创建servlet程序,指定地址

提交按钮访问域名修改

 

 





servlet程序第一次访问,就创建
servletConfig对象是每个servlet程序创建时,就创建了一个对应的servletConfig对象



在初始化init( )方法处,获取servlet程序的信息 

init()方法中的ServletConfig对象是通过参数传递过来的,doGet()方法中的ServletConfig对象是通过getServletConfig()获取的







继承了HttpServlet类的子类,重写了doGet、doPost方法,当重写init()方法时,需要调用父类的init()方法,将config保存到父类

 



ServletContext对象是域对象------该对象在整个web项目中被使用(只有一个)



添加<context-param>和servlet程序

 

注意事项:

获取web.xml的配置上下文参数context-param
  通过 getServletConfig().getServletContext()

通过 getServletContext()

变更信息----执行步骤:1、更新classes和resources  2、 重新部署

一个web项目只有一个ServletContext实例,地址一样
改变一个ServletContext对象的键值,其他对象中也可以创建并使用


 

 




 

 




 

---------获取服务器封装的HTTP协议的请求



请求进入Tomcat服务器,服务器就会把请求过来HTTP协议信息解析好,封装Request对象
然后传入service方法(doGet和doPost),我们就可以通过HttpServletRequest对象,获取请求


 

getRemoteHost()获取客户端IP,当返回0:0:0:0:0:0:0:1-----Ipv6协议地址,只有在你的服务器和你的客户端是同一台机器所导致的,只有在这种情况下才会这样。
访问路径,用127.0.0.1代替localhost访问-------解决返回路径不是本机Ipv4

getRequestURI------获取资源路径(相对路径)
getRequestURL-----获取资源定位符(绝对路径)

             
                  
                
                 
当localhost设置为真实IP,访问该url服务器getRequestURL返回的就是,客户端的真实IP



getRemoteHost------获取客户端ip地址
getHeader--------获取请求头
getMethod--------获取请求的方式


获取客户端IP--------------访问服务器的客户端的IP




 



getParameter()--------获取单个请求



此时用getParameter() ,多选会返回出错

 

getParameterValues()-----获取多个值时



   

 

getParameterMap()------获取请求参数---返回一个Map<string,string[]>集合,value为数组,防止参数名重复
 

Post方式,用户名中文获取乱码

             
解决:在doPost()中,使用setCharacterEncoding()
         

 

 

Servlet1:

Servlet2:


 

精简:


请求转发必须以斜杠  /  开头,表示web


 

通过请求转发,访问到WEB-INF中的文件
一般情况在WEB-INF目录下的文件是不允许访问的,通过请求转发,自定义到其下的文件,就可以访问到了

 

 

base标签设置页面相对路径工作时参照的地址

页面跳转都是通过参照当前页面网址加上跳转地址

静态跳转:

首页页面

c页面

1. 访问初始页面

2. 页面跳转,通过参照当前浏览器的网址
即--------------------------- (当前目录下的文件可以省略)+ 
成功跳转到c.html页面--------------------------

3.跳回首页,同样参照当前页面网址
 +  =  

 

通过servlet跳转


此时就需要使用base标签,设置所有页面跳转的参照地址

路径下的c.html文件可以省略

 

所有的都不能通过静态直接打开,否则路径中会多出一个web,导致路径出错

 

 


      
      




特殊情况,是将 / 发送给浏览器解析得到

 

 



 


getWriter()
getOutputStream()
setCharacterEncoding()
setHeader()
setContentType()



          getWriter()

          getOutputStream()

      






resp.getWriter().write("");


通过response对象,获取字符输出流对象,返回一个字符串数据

 d) 响应的乱码解决

回传中文乱码



 

         setCharacterEncoding()

         setHeader()


解决:
方法一:

    setCharacterEncoding("UTF-8")---------给服务器设置字符编码UTF-8
    setHeader("Content-Type","text/html; charset=UTF-8")----------给浏览器设置字符编码UTF-8

 

         setContentType()

方法二:(推荐)


 

请求重定向第一种方案




第一次请求                                                                              第二次请求
       

 

请求重定向的第二种方案:

        

 

 

 

 

 

 

 

 

 注解 





  对应servlet-name

 
对应着
当只有一个路径时,大可好可以省略

 只有一个路径,value也可以省略

       
 大括号,可同时配置多个路径



 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值