初探javaEE的servlet

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lijiaheng525/article/details/52281691

Servlet基础知识笔记:

一 servlet的快速入门知识: 找一个java web项目中的jsp页面,在发布tomcat服务器后生成的.java文件(E:\apache-tomcat-7.0.62\work\Catalina\localhost\EasyBuy_day0819\org\apache\jsp),分析其代码可知jsp九大内置对象的由来,可知request,response对象是外部传进来的,而其他的对象基本都是由pageContext获取的。 response.setContentType("text/html; charset=utf-8"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);_jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut();_jspx_out = out;

二 一个servlet的实列 自定义的servlet必须要继承HttpServlet类,然后重写该父类的init(),service(),doGet(), doPost(), destroy()方法 pubblic class MyServlet extends HttpServlet { public void destroy() { super.destroy(); }public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response);//一般不管什么方式向servlet中提交数据我们都直接在doGet中调用dopost()方法将请求的参数直接给doPost()处理,因为post处理的数据量比get的大而且更加的安全 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }public void init(ServletConfig config) throws ServletException { //config用于获取web.xml中当前的servlet中初试化的参数 super.init(config); } public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { super.service(req, res);//这里要注意的是若我们在service中不写super.service(req, res),则不会调用doGet,和doPost()方法 }}

三 servlet的提交方式以及两种方式提交中文乱码处理 1 get方式的提交的数据由于是跟在URL后面所以一般在tomcat中加, <ConnectorURIEncoding="utf-8"connectionTimeout="20000"port="8080"protocol="HTTP/1.1"redirectPort="8443"/>加上URIEncoding="utf-8" 2,post方式的提交是不跟在URL后面所以我们一般在Jsp页面头中加上contentType="text/html; charset=utf-8"(响应的编码集)和 pageEncoding="utf-8"(文档存储的编码集)

四 servlet 405错误:没有覆盖父类的doGet或doPost方法导致的

五 servlet的生命周期init()---->service()-------------->[doGet()/doPost()]---------->destroy()

六 servlet的表单处理 1,注意form标签中的action=“servlet的名字” 2,request.getParamter(“name”)用于获取表单提交的数据(单个值的) 2,request.getParamterNames(“name”)用于获取表单提交的数据是同一个name多个值得例如:爱好的checkbox的处理。

七 servlet中的请求转发与页面重定向 1,request.getRequestDispatcher("add.jsp").forward(request, response);这种就是请求转发页面的方式,是在服务端运行的,URL不会改变,服务端偷梁换柱把相关的页面请求过来展示给用户看,并且将request对象传下去了,因此也可以去request容器的值了 2,response.sendRedirect("add.jsp");这种就是页面重定向,是在客户端运行的,URL会改变,会直接跳转到用户请求的页面呢,并且重新创建了request对象 ,因此传递不了request容器的值

八 sercvlet中的CURD 通过servlet控制用户请求来实现,增删改查操作,不同的请求,操作不同的DAO

九 servlet的分页与优化

十 servlet中的文件下载以及下载时的乱码处理, InputStream is=this.getServletContext().getResourceAsStream(filePath); //设置文件大小 is.available()获得文件的大小 response.setContentLength(is.available()); //设置文件类型 response.setContentType("image/png"); //解决中文,文件名问题 response.setHeader("content-disposition", "attachment;filename="+new String("UploadFiles/123.png".getBytes(),"iso-8859-1"));ServletOutputStream os=response.getOutputStream(); 前提:注意我们说是内嵌显示还是下载,那 一定是针对可内嵌显示的类型 ,例如"image/jpeg","image/png"会再网页显示等 ,因为response content type设置成了"application/octet-stream"则不会再网页显示,【与setContentType("image/png")有关】表示浏览器内嵌显示一个文件 Content-disposition: inline; filename=foobar.pdf;表示会下载文件(弹窗), Content-disposition: attachment; filename=foobar.pdf

十一 servlet 中的文件上传,以及获取表单数据 SmartUpload su=new SmartUpload(); su.initialize(this, request, response); su.setAllowedFilesList("png,jpg,doc,docx,mp3,mp4,pdf");//设置允许的文件上传的类型 su.setMaxFileSize(1024*1024*3);//设置允许的单个文件上传大小 su.setTotalMaxFileSize(1024*1024*30);//设置允许的总的文件上传大小try { //文件交接 su.upload(); //获得表单提交的用户名,必须要在数据交接之后才能获得 Request req=su.getRequest(); String username=req.getParameter("username"); System.out.println(username+"...............name"); Files flies=su.getFiles(); //flies.getCount()获得中的文件数 for (int i = 0; i < flies.getCount(); i++) { File file=flies.getFile(i); //判断上传文件是否为空 if(file.getSize()>0){ //保存文件 file.saveAs(filepath+java.io.File.separator+UUID.randomUUID().toString()+file.getFileName());} }

十二 servlet中初试化参数

十三 servlet 中cookie的使用,存储中文问题

十四 servlet 中的token验证十五servlet中MD5,Base64的加密,

十六 servlet中常用的配置:context_param(全局变量),load_on_start(在web.xml中设置serlvet的初始化顺序),error_page(配置错误页面处理)

十七 servlet的过滤器filter,以filter的乱码处理

猜你喜欢

转载自blog.csdn.net/lijiaheng525/article/details/52281691
今日推荐