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

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


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


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