天天看点

是javaservlet还是asp.net?

  我们都知道Java是面向对象语言,起先的Java并不能进行服务器web开发,只能进行简单的applet网页开发,后来Java进行了拓展,这就出了 后来的javaservlet,毫无疑问javaservlet已经是一门很老的技术了,但为了更加深入Javaweb开发,我们不得不学习 javaservlet,但Javaservlet处理页面的能力确实很弱,这不得不出现一门新的技术,jsp就应运而生了。然而最近学习asp.net 的时候发现,.net技术和java技术如此的相像,我们在学校学习asp.net的时候,老师们根本不跟我说底层的东西,只是教了我们简单的控件属性, 并没有深入,现在认真研究起来,发现老师教的只是皮毛的皮毛而已,这几天学习.net技术,让我有很多感悟,学习web开发一定要学习http协议,不然 有多方面都会很迷糊,request,response提交与返回,中间涉及到了,浏览器与服务器之间的交互,request我们需要知道,表头,信息 头,提交的内容,是通过什么方式提交给服务器的,是get还是post。response返回是怎样把内容返回给浏览器的,表头,信息头,和信息内容,解 析的顺序,我们也需要了解,由于http协议涉及到的内容较多,这里就不多加赘述了。

      正如题:是Javaservlet还是asp.net,学过java的人都用应该知道Javaservlet,但学过asp.net的人不见得知道 ashx,ashx是一般处理程序,也是一种比较老的技术了,ashx处理能力和Javaservlet很相似,有代码为证:

javaervlet页面代码:

  1. package com.xz.form; 
  2. import java.io.IOException; 
  3. import java.io.PrintWriter; 
  4. import javax.servlet.ServletException; 
  5. import javax.servlet.http.HttpServlet; 
  6. import javax.servlet.http.HttpServletRequest; 
  7. import javax.servlet.http.HttpServletResponse; 
  8. public class MyInfoForm extends HttpServlet { 
  9.     public void doGet(HttpServletRequest request, HttpServletResponse response) 
  10.             throws ServletException, IOException { 
  11.         response.setContentType("text/html;charset=utf-8"); 
  12.         PrintWriter out = response.getWriter(); 
  13.         //response.setCharacterEncoding("utf-8"); 
  14.         out.println("<form action='/ServletDemo3/ServletFormCL' method='post'>"); 
  15.         out.println("用户名:<input type='text' name='username'/><br/>"); 
  16.         out.println("密 码:<input type='password' name='password'/><br/>"); 
  17.         out.println("性  别:<input type='radio' name='sex' value='男'>男<input type='radio' name='sex' value='女'>女<br/>"); 
  18.         out.println("你的爱好:<input type='checkbox' name='aihao' value='音乐'>音乐<input type='checkbox' name='aihao' value='旅游'>旅游<br/>"); 
  19.         out.println("你所在的城市:<select name='city'><option value='湖南'>湖南</option><option value='北京'>北京</option></select><br/>"); 
  20.         out.println("自我简介:<br/><textarea clos='20' rows='10' name='intro'></textarea><br/>"); 
  21.         out.println("上传照片:<input type='file' name='file'/><br/>"); 
  22.         out.println("<input type='submit' value='提交'>"); 
  23.         out.println("</form>"); 
  24.     } 
  25.     public void doPost(HttpServletRequest request, HttpServletResponse response) 
  26.             throws ServletException, IOException { 
  27.         response.setContentType("text/html;charset=utf-8"); 
  28.         PrintWriter out = response.getWriter(); 
  29.         this.doGet(request, response); 
  30.     } 

javaservlet处理页面代码

  1. package com.xz.form; 
  2. import java.io.IOException; 
  3. import java.io.PrintWriter; 
  4. import javax.servlet.ServletException; 
  5. import javax.servlet.http.HttpServlet; 
  6. import javax.servlet.http.HttpServletRequest; 
  7. import javax.servlet.http.HttpServletResponse; 
  8. public class ServletFormCL extends HttpServlet { 
  9.     public void doGet(HttpServletRequest request, HttpServletResponse response) 
  10.             throws ServletException, IOException { 
  11.         request.setCharacterEncoding("utf-8"); 
  12.         response.setContentType("text/html;charset=utf-8"); 
  13.         PrintWriter out = response.getWriter(); 
  14.         String name = request.getParameter("username"); 
  15.         String pwd = request.getParameter("password"); 
  16.         String sex = request.getParameter("sex"); 
  17.         String[] aihao  = request.getParameterValues("aihao"); 
  18.         String city = request.getParameter("city"); 
  19.         String intro = request.getParameter("intro"); 
  20.         out.print("用户名是:"+name); 
  21.         out.println("<br/>密码是:"+pwd); 
  22.         out.println("<br/>性别:"+sex); 
  23.         out.println("</br>爱好:"); 
  24.         if(aihao!=null) 
  25.         { 
  26.             for(int i=0 ; i<aihao.length; i++) 
  27.             { 
  28.                 out.println(" "+aihao[i]+" "); 
  29.             } 
  30.         } 
  31.         else 
  32.         { 
  33.             out.println("您没有选择爱好!"); 
  34.         } 
  35.         out.println("<br/>自我简介:"+intro); 
  36.     } 
  37.     public void doPost(HttpServletRequest request, HttpServletResponse response) 
  38.             throws ServletException, IOException { 
  39.         response.setContentType("text/html;charset=utf-8"); 
  40.         PrintWriter out = response.getWriter(); 
  41.         this.doGet(request, response); 
  42.     } 

下面我再看看ashx代码:

  1. <%@ WebHandler Language="C#" Class="asp" %> 
  2. using System; 
  3. using System.Web; 
  4. public class asp : IHttpHandler { 
  5.     public void Proce***equest (HttpContext context) { 
  6.         context.Response.ContentType = "text/html"; 
  7.         String username = context.Request["username"]; //得到from表单username的值 
  8.         String pwd = context.Request["password"]; //得到from表单password的值 
  9.         context.Response.Write("用户名:"+username+"密码:"+pwd); //打印到屏幕上 
  10.         context.Response.Write("<br/>"); 
  11.         context.Response.Write("<form action='asp.netTest1.ashx' method='post'>"); 
  12.         context.Response.Write("<input type='hidden' name='ispostback' value='true'/>"); 
  13.         context.Response.Write("用户名:<input type='text' name='username' /><br/>"); 
  14.         context.Response.Write("密 码:<input type='password' name='password' /><br/>"); 
  15.         context.Response.Write("<input type='submit' value='提交'/>"); 
  16.         context.Response.Write("</form>"); 
  17.         String ispostback = context.Request["ispostback"];  //隐藏字段所传的值 
  18.         if (ispostback=="true") 
  19.         { 
  20.             context.Response.Write("提交进入........."); 
  21.         } 
  22.         else 
  23.         { 
  24.             context.Response.Write("直接进入........."); 
  25.         } 
  26.     } 
  27.     public bool IsReusable { 
  28.         get { 
  29.             return false; 
  30.         } 
  31.     } 

-----不的不说微软确实很强大,不光技术易用,并且还有深意,虽然有模仿的嫌疑,但不得不说技术都是想通,谁提供的解决方案好,谁就是老大,但毫无疑问微软的解决方案确实不错,为程序员做了很多简化动作,只要了解内部原理,其他的都不在话下了!

转载于:https://blog.51cto.com/shenlinyuxi/940723