当前位置: 首页 > 最新文章 > 正文

挖穿Android第三十四天

-- 配置Servlet --> Hello 类的全类名 Range头的使用try { // [1]创建url对象 URL url = new URL("http://127.0.0.1:8080/14_range/download.txt"); // [2]连接这个url URLConnection connection = url.openConnection(); // [3]添加请求头

admin

-- 配置Servlet --> Hello 类的全类名

挖穿Android第三十四天

Range头的使用

try { // [1]创建url对象 URL url = new URL("http://127.0.0.1:8080/14_range/download.txt"); // [2]连接这个url URLConnection connection = url.openConnection(); // [3]添加请求头 connection.addRequestProperty("Range", "bytes=100-"); // [4]获取一个inputStream InputStream in = connection.getInputStream(); // [5]把inputStream里面的数据写入到文件里面去 FileOutputStream fos = new FileOutputStream("info.txt"); int len = 0; byte buff[] = new byte[1024]; while ((len = in.read(buff)) != -1) { fos.write(buff, 0, len); } fos.close(); in.close();} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();}

Servlet的使用

 html+css+jsServlet:用来开发动态web的技术属于javaee规范servlet使用步骤 [1]写一个类继承httpServlet [2]重写doGet和doPost方法 @Override  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doget"); PrintWriter writer = resp.getWriter(); writer.println("<html>"); writer.println("<body>"); writer.println("Hello Servlet"); writer.println("</body>"); writer.println("</html>"); } [3]配置servlet web.xml中的配置 <!-- 配置Servlet --> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>类的全类名</servlet-class> </servlet> <!-- 配置servlet访问路径 --> <servlet-mapping> <servlet-name>要与配置的servlet匹配</servlet-name> <url-pattern>浏览器要访问的路径</url-pattern> </servlet-mapping>

Servlet的执行过程

servlet运行机制[1]发送一个请求 http://localhost:8080/02_range/hello[2]tomcat解析是哪个应用程序[3]找到这个应用程序 并且解析 web.xml[4]解析web.xml里面的url-pattern 比对成功的话 解析 servlet-name[5]通过这个servlet-name 找到这个Servlet这个类利用eclipse提供的Servlet创建Servlet

Servlet的生命周期

[1]构造方法[2]init方法初始化 只会创建的时候执行一次[3]处理客户端对service的调用 多次请求 多次调用[4]销毁servletservlet有俩种方式 会启动 1.正常的请求 会启动servlet 2.让tomcat启动的时候就去加载servlet 需要在web.xml里面配置 <servlet> <servlet-name>LifeServlet</servlet-name> <servlet-class>com.heima.life.LifeServlet</servlet-class> <load-on-startup>1</load-on-startup> 1-9 </servlet>

url-pattern的三种写法

[1]完全路径匹配 /hello[2]目录匹配 /*[3]扩展名匹配 *.do *.action优先级:完全路径匹配>目录匹配>扩展名匹配

相对路径和绝对路径

99乘法表 PrintWriter writer = response.getWriter(); for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { writer.print(i + " * " + j + " = " + i * j+ " "); } writer.println(); }相对路径: 相对于当前访问的路径 路径前面 不会加 / 绝对路径: 一个绝对的路径 路径前面 一定要加 / 项目开发常用的是绝对路径

ServletConfig对象的使用

[1]获取Servlet的名称 getServletConfig().getServletName();[2]获取一个ServletContext对象 ServletContext context = config.getServletContext();[3]获取一些初始化参数 在web.xml中配置一些初始化的参数 <servlet> <init-param> <param-name>username</param-name> <param-value>zhangsan</param-value> </init-param> </servlet>  在servlet中获取这个参数 ServletConfig config = getServletConfig(); String name = config.getInitParameter("username");

ServletContext对象的使用

作用: [1]获取web.xml里面的参数 <context-param> <param-name></param-value> <param-value></param-value> </context-parm>[2]设置一个全局的参数 context.setAttribute("number", 100);[3]获取真实路径 getRealPath

request和response简介

request:请求对象 response:响应对象客户端每次请求都会创建一个request和response对象,并且会把这俩个对象传给doGet方法和doPost方法

request获取信息

[1]获取请求行信息 [1]获取请求方式 getMethod [2]获取请求路径 getRequestURI [3]获取请求协议 getProtocol[2]获取请求头信息 Enumeration<String> names = request.getHeaderNames(); while(names.hasMoreElements()){ String name = names.nextElement(); String value = request.getHeader(name); System.out.println(name+" = "+value); }[3]获取表单数据 request.getParameter(""); request.getParameterValues("");获取一组参数 request提交数据乱码的原因[1]url编码解决方式[1]get [1]改变tomcat的编码方式 [2]手动编码 URLEncoder.encode(usernmae,"iso-8859-1"); URLDecoder.decode(usernmae,"gbk"); [3]解决get请求编码 [1]浏览器发送中文字符串->中国->url编码为%E9%BB%91%E9%A9%AC->java iso-8859-1 解码->é??é??->需要利用iso-8859-1重编->%E9%BB%91%E9%A9%AC->根据相应的解码方式解码[2]post 在获取数据之前对request对象设置编码 request.setCharacterEncoding("gbk");

response输出信息

[1]字符流 response.getWriter[2]字节流 response.getOutputStream()response响应数据乱码字节流 [1]设置响应编码 response.setCharacterEncoding("gbk"); [2]告诉浏览器编码方式text/html;charset=utf-8 response.setContentType("text/html;charset=utf-8");字符流: 注意:服务端的编码要与浏览器保持一致 [1]告诉浏览器编码方式text/html;charset=utf-8 response.setContentType("text/html;charset=utf-8"); response.getOutputStream().write("黑马".getBytes("utf-8"));

文件上传

步骤[1]客户端要求 1)要有文件上传项 2)input type =file 还需要一个name属性 3)提交方式必须是post 4)enctype="multipart/form-data"[2]实现文件上传市面常见的2种技术 1)jspsmartUpload 2)apache fileupload[3]使用fileipload实现文件上传 1)导包 2)构建一个磁盘文件工厂 3)通过工厂获取一个文件核心上传类 4)解析request 返回list<FileItem> 5)循环list 取出每个FileItem 判断是普通项 还是文件项 6)根据对应的类型处理主请求代码: try { // [1]构建一个磁盘文件工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); // [2]通过工厂获取一个文件核心上传类 ServletFileUpload fileUpload = new ServletFileUpload(factory); // [3]解析request 返回list<FileItem> List<FileItem> parseRequest = fileUpload.parseRequest(request); // [4]循环list 取出每个FileItem 判断是普通项 还是文件项 for (FileItem fileItem : parseRequest) { if (fileItem.isFormField()) { // [5]普通字段 String fieldName = fileItem.getFieldName(); // 取出字段的名字 String string = fileItem.getString(); // 取出字段的值 System.out.println("Name = " + fieldName + " string = " + string); } else { // [6]文件 String fieldName = fileItem.getFieldName(); // 取出字段的名字 String string = fileItem.getString(); // 取出文件的内容 String name = fileItem.getName(); // 取出字段的值 实际上是文件名 System.out.println("Name = " + fieldName + " string = " + string + " name = " + name); InputStream in = fileItem.getInputStream(); String realPath = getServletContext().getRealPath("upload"); System.out.println("realPath = " + realPath); FileOutputStream ops = new FileOutputStream(realPath + "/" + name); int len = 0; byte buff[] = new byte[1024]; while ((len = in.read(buff)) != -1) { ops.write(buff, 0, len); } ops.close(); in.close(); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }

文件上传核心类介绍

DiskFileItemFactory 磁盘工厂 DiskFileItemFactory(int sizeThreshold, java.io.File repository) 参数1:上传文件的缓存 参数2:如果上传的文件超过了你设置的缓存,设置一个新的临时目录来存放 factory.setSizeThreshold(1024*1024);//1mb factory.setRepository(new File(getServletContext().getRealPath("temp"))); ServletFileUpload 核心文件上传类 ServletFileUpload(FileItemFactory fileItemFactory) 参数:需要一个磁盘工厂 解决文件上传乱码: fileUpload.setHeaderEncoding("utf-8");FileItem 数据类型 fileItem.isFormField() String fieldName = fileItem.getFieldName(); // 取出字段的名字 String string = fileItem.getString(); // 取出字段的值 else  String fieldName = fileItem.getFieldName(); // 取出字段的名字 String string = fileItem.getString(); // 取出文件的内容 String name = fileItem.getName(); // 取出字段的值 实际上是文件名 删除临时文件 如果有的话 fileItem.delete()


上一篇: 赞!一文搞懂SpringSecurity核心认证流程 下一篇:关于Android代码混淆,你了解多少?
返回顶部