Servlet-请求与响应

    今天把Servlet的请求与响应是相关的内容看了一遍,所以写博客记录一下今天所学到的识。刚好也整理一下。
    首先明白Servlet是什么,Servlet就是运行在web容器里面的Java程序。如果没有web容器,它就只是一个java类。Servlet/Jsp只认web容器。下面来说说一次请求响应的整个流程。首先,用户在浏览器中输入了一个地址,然后敲了回车键之后,然后访问到Http服务器。Http服务器是基于TCP/IP协议的。Http将这次请求转到web容器中,web容器根据这次请求,就会创建这次请求HttpServletRequest对象和HttpServletResponse对象。然后根据web.xml中的映射信息和@WebServlet标注的信息找到对应的Servlet信息。然后调用Servlet的service()方法,每次在调用之前,会首先调用getLastModified()方法。该方法会判断Servlet是否进行更新后,返回值是-1的话,就说明该Servlet是最新的。然后判断是什么方法来进行判断的。使用request.getMethod()来获取的访问的方法类型。通过If语句,不同方法进入不同的if语句里面进行处理。

乱码方面

    如果客户端是使用post方法来进行访问的话,因为post方法将整体内容封装起来。在url中看不到,所以在访问的时候,就已经将字符串分装好了,如果是使用”utf-8”编码方式来进行编码的话,那么在doPost()方法中就可以使用request.setCharacterEncoding(“UTF-8”)来设置编码格式。必须在使用之前进行设置。如果是doGet()的话,因为请求信息是在URL进行拼接,所以在URL请求中就已经进行了编码。并且响应的信息交给了HTTP服务器来进行处理。所以在doGet()方法中,可以使用String XX = new String(XXX.getBytes(“编码格式”),”正确的编码格式”);来进行获取正确的编码值。

forward()方法和sendRedirect()方法区别

    首先forward()方法是在web容器内部进行跳转,并且是在一次请求中。所以,所有跳转对象共享资源。并且浏览器中的地址没有任何改变。而sendRedirect()则是重新请求新的IP地址,这个地址可以是项目内的,也可以是外部的地址。同时,使用了sendRedirect()后,浏览器中的地址会进行改变。

上传对象方式

    在Servlet 3.0可以使用Part这个类来进行实现。用这个类来实现,超级简单。首先要在表单中设置enctype=”multipart/form-data”来设置文件类型。然后,在doGet()或者doPost()方法中使用 Part part = request.getPart(“文件名字”);然后可以使用下面的方法来获取用户选择的文件的名称。 
String header = part.getHeader(“Content-Disposition”);
String fileName =header.substring(header.indexOf(“filename=\””)+10,header.lastIndexOf(“\””)); part.write(filaName);
当然,你在使用Part这个类的时候,必须在类的开头使用@MultipartConfig。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值