java servlet .net_JAVA学习之 Model2中的Servlet与.NET一般处理程序傻傻分不清楚

时隔多日,多日合适吗,应该是时隔多月。我又想起了一般处理程序。这都是由于近期在实现的DRP系统中经经常使用到jsp+servlet达到界面与逻辑的分离。servlet负责处理从jsp传回的信息;每当这个时候我就有一种感觉,这里的Servlet好像跟一般处理程序有着相同的作用,只是由于我对一般处理程序的了解并不深刻,仅仅是在一个写简单的实例中应用过。大家有什么看法都能够提出来,以下我就从我有限的知识出发来说说我的理解:

一、一般处理程序

一般处理程序用来处理一般的web请求。一般处理程序实现一个FrameWork的接口:IHttpHandler,该接口定义了假设实现一个HTTP骑牛的处理所必须实现的一些系统约定。创建一个空白的一般处理程序:

///

/// HelloWord 的摘要说明

///

public class HelloWord : IHttpHandler

{

public void ProcessRequest(HttpContextcontext)

{

context.Response.ContentType ="text/plain";

context.Response.Write("HelloWorld");

}

public bool IsReusable

{

get

{

return false;

}

}

}

我们能够看到仅仅须要实现一个方法和一个属性,当中ProcessRequest放置处理请求的主要代码;IsReusable属性,获取指示其它请求能否够使用IHttpHandler 实例,一般都设置为true;

以下以以一个简单的加入用户为例。看一般处理程序是怎样实现的:

web传递信息:

//加入用户信息

function saveOneOrganization() {

//获username称

var nameValue =$("#UserName").val();

//获取password

var passWordValue =$("#PassWord").val();

//给隐藏控件test的value赋值

var test = "add";

if (nameValue == "" ||passWordValue == "" ||) {

alert("请将信息填写完整!");

}

$.post("addManager.ashx", {nameValue: nameValue, passWordValue: passWordValue,test: test }, function(data) {

alert(data);

});

}

一般处理信息处理:

///

/// addManager1 的摘要说明

///

public class addManager1 : IHttpHandler

{

UserManagerBLL userManagerBll = newUserManagerBLL();

public void ProcessRequest(HttpContextcontext)

{

//接受前台传过来的test值

string command =context.Request.Params["test"];

if (command =="addUser") //加入username

{

addUser(context);

}

else if (command =="delUser")

{

modifyUser(context);

}

}

//加入用户信息

public void addUser(HttpContextcontext) {

//username称

string strNameValue =context.Request.Params["nameValue"];

//用户密码

string strpassWordValue =context.Request.Params["passwordValue"];

//实例化用户实体

UserEntity userEntity = new UserEntity();

//将变量值传给实体

userEntity.UserName = strNameValue;

userEntity.Password =strpassWordValue;

//调用B层的方法

string strResult=userManagerBll.add(userEntity);

//往前抬传值

context.Response.Write(strResult);

context.Response.End();

}

//改动

public void modifyUser(HttpContextcontext)

{

//实现与加入用户已知不再详述

}

public bool IsReusable

{

get

{

return true;

}

}

}

二、Servlet

事实上Servelet范围非常广。这里我说的Servlet仅仅是Servlet的一种实现。创建Servlet事实上现HttpServlet,与IHttpHandler相似的是HttpServleteasy也是响应Web客户的请求,WEB容器把客户请求封装成一个HttpServletRequest对象,然后把对象传给Servlet的对象方法进行处理。

在继承HttpServlet时。能够选择覆盖部分方法。比如:doGet()或doPost(),或者覆盖Service方法。

以下简答的加入改动实例看一下servlet的实现:

jsp调用:

function add(){

window.self.location="servlet/flowCard/FlowCardServlet?command=add"

}

Servlet实现:

publicclass UserServlet extends HttpServlet {

@Override

protectedvoid service(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

//必须显示调用父类的service方法

super.service(request,response);

if("add".equals(getCommand())) {

add(request,response);

}elseif ("del".equals(getCommand())) {

}elseif ("modify".equals(getCommand())) {

}else {

}

}

/**

* 加入

* @param request

* @param response

* @throws ServletException

* @throws IOException

*/

privatevoid add(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

//用户姓名

String userName=request.getParameter("userName");

//用户password

String passWord=request.getParameter("passWord");

user.setUserName(userName)

user.setpassWord(passWord)

UserManager.add(user);

//页面跳转

response.sendRedirect(request.getContextPath()+ "/flowcard/flow_card_maint.jsp");

}

/**

* 删除

* @param request

* @param response

* @throws ServletException

* @throws IOException

*/

privatevoid del(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

//略去

}

}

使用servlet须要在web.xml中进行配置:

UserServlet

com.tgb.UserServlet

2

UserServlet

/servletUserServlet

比較:

1、事实上从上面的代码能够看出。他们两个都能够依据页面传过来的參数推断要运行的方法。进而调用业务层的详细处理过程,非常easy的把页面与业务逻辑分开。

2、在.net中的一般处理程序与java中Servlet都是用来处理web端发送的请求,解开页面与业务逻辑的耦合;看起来作用就像是MVC框架中Controller的作用,近期感觉非常多东西非常像。主要是缺乏实践还没摸透当中的道理,欢迎指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值