Servlet常见使用和操作
来源:互联网 发布:lols7版本强势英雄知乎 编辑:程序博客网 时间:2024/06/06 16:06
文章内容
1.重定向
2.Cookie和Session操作
3.异常处理
4.文件上传
以上使用大多是针对HttpRequest和HttpResponse进项操作,这两个对象基本包含的与Http相关的参数和操作;
1.重定向
重定向主要分为两种方式,一种是服务器端通过RequestDispatcherforward的转发请求,对客户端是透明的;另一种是通过HttpResponse的sendRedirect,这种跳转由客户端来响应处理;
req.setAttribute("msg", message);req.getRequestDispatcher("test.jsp").forward(req, resp);//resp.sendRedirect("/index.jsp");
注:sendRedirect也可以通过setStatus() 和 setHeader() 方法一起使用来达到同样的效果;
2.Cookie和Session操作
HttpRequest可通过getCookies()获取到当前请求关联的Cookie值,addCookie(Cookie )设置值;
同样的,Session也是通过同样的方式获取,只是一个请求只能关联一个Session,不过可以修改Session中的属性值;
关于Cookie和Session的操作基本都已经被Cookie和Session类封装好,可以直接使用;关于Cookie和Session的作用这里就不介绍了;
Cookie[] cookies = req.getCookies();StringBuilder sb = new StringBuilder();for(Cookie c : cookies){ sb.append(c.getName()+":"+c.getValue());}req.setAttribute("cookies", sb.toString());req.setAttribute("msg", message);req.getRequestDispatcher("test.jsp").forward(req, resp);
3.异常处理
对于Web开发中如果出现错误,出于安全的考虑,我们并不希望将错误信息直接暴露到客户端,我们可以定义统一的异常处理Servlet或者错误界面;
增加web.xml配置:
<!-- error-code 相关的错误页面 --><error-page> <error-code>404</error-code> <location>/error.jsp</location></error-page><error-page> <error-code>500</error-code> <!-- 可以指定异常类型 --> <!-- <exception-type>java.lang.Throwable</exception-type > --> <location>/ExceptionHandle</location></error-page>
//ExceptionServlet.javapackage com.aaron.servlet.test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ExceptionServlet extends HttpServlet {private String message;@Overridepublic void init() throws ServletException { message = "Error String";}@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ PrintWriter pw = resp.getWriter(); pw.println("Ststus Code :"+req.getAttribute("javax.servlet.error.status_code")); pw.print("<p>"); pw.print("From Servlet :"+req.getAttribute("javax.servlet.error.servlet_name")); pw.print("<p>"); pw.println("Exception Type :"+req.getAttribute("javax.servlet.error.message")); pw.print("<p>"); pw.flush(); }@Overridepublic void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ doGet(req,resp); }}
4.文件上传
以前文件上传我们基本是使用common-fileupload或者SmartUpload,但是在Servlet 3.0之后,提供了文件上传的API,使用Part代替FileItem,用于获取上传的文件,至于效率上,并没有进行详细的测试;
//使用@WebServlet配置UploadServlet的访问路径@WebServlet(name="UploadServlet",urlPatterns="/UploadServlet")//使用注解@MultipartConfig将一个Servlet标识为支持文件上传@MultipartConfigpublic class UploadServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String path=this.getServletContext().getRealPath("/"); Part p=req.getPart("uploadFile"); ApplicationPart ap= (ApplicationPart) p; String fname=ap.getSubmittedFileName(); int name_idx=fname.lastIndexOf("\\")+1; String itemName=fname.substring(name_idx,fname.length()); p.write(path+"/upload/"+itemName); }}
Servlet 3.0提供了一些新特性,其中就包括可用注解代替在web.xml中的配置,包括Servlet、Filter、Listener;
Servlet 3.0还有一个重要的新特性是特强了对异步的支持,来应对复杂的业务逻辑,可同时配置异步的Servlet和异步的Listener用于监听Servlet的创建和完成;
- Servlet常见使用和操作
- map的常见操作和使用示例
- 使用js和jquery的常见操作
- Servlet基础 Tomcat配置 和常见错误代码
- 关于jsp和servlet常见面试题
- github常见操作和常见错误!
- github常见操作和常见错误
- github常见操作和常见错误!
- git 常见操作和常见错误
- github常见操作和常见错误!
- github常见操作和常见错误!
- git常见操作和常见错误
- github常见操作和常见错误!
- github常见操作和常见错误
- github常见操作和常见错误!
- github常见操作和常见错误!
- github常见操作和常见错误!
- github常见操作和常见错误!
- 程序员网站
- [STM32]--关于移植STemwin所遇到的问题记录(2)
- Mysql主-从实现
- 大道至简-软件工程实践者的思想阅读随笔
- java实训第4天7/31
- Servlet常见使用和操作
- stm32学习笔记(一)点亮LED
- java实训第五天8/01
- Python 数据处理—12 个Pandas 技巧(上下)
- 【二分图匹配入门专题1】H
- nodeJS 写文件读文件
- No qualifying bean of type 'com.yubai.bean.BeanWayService' available
- 在创建Maven项目he superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- QOpenGLWidget绘制2D的方法