Google Guice之Servlet

下面我们来看看Guiceweb的开发,这里需要注意的是你选用的guice和guice-Servlet的jar的版本最好已知,不一致的话可能会出现问题,原先我是用guice-3.0.jar和guice-servlet.jar,但是在启动web的时候报了一个类找不到,我换成了guice-servlet-30.jar就可以了。

(1)要开发Guice的web程序,首先得在你的web.xml 文件里面加上如下配置:

<!-- 添加Guice的Filter -->
	<filter>
		<filter-name>MyWebGuice</filter-name>
		<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>MyWebGuice</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 由于GuiceFilter中没有完成Guice的初始化工作,所以我们必须自己顶一个Listener来完成Guice Injector的初始化工作 -->
	<listener>
		<listener-class>guice.web.listener.MyGuiceWebListener</listener-class>
	</listener>

(2)实现MyGuiceWebListener类

import guice.web.module.MyWebModule;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Singleton;
import com.google.inject.servlet.GuiceServletContextListener;

/**
 * 
 * @author Java_Le
 * @Date 2014-5-3下午01:47:34
 * @ClassName MyGuiceWebListener.java
 * 
 * 集成GuiceServletContextListener完成Guice的初始化工作
 * 返回一个Injector
 */
public class MyGuiceWebListener extends GuiceServletContextListener {
	@Override
	protected Injector getInjector() {
		return Guice.createInjector(new MyWebModule());//这边我自己定义了一个MyWebModule,这个类集成了ServletModule
	}
}
(3)来看看MyWebModule这个类,这里里面完成将url和Servlet之间的绑定,通过调用serve(urlPath).with(sub HttpServlet)

package guice.web.module;

import guice.web.servlet.MyServlet;

import com.google.inject.servlet.ServletModule;

public class MyWebModule extends ServletModule{

	@Override
	protected void configureServlets() {
		super.configureServlets();
		//在这里可以完成完成加一些url绑定到我们的servlet上
		//原先这一部分实在web.xml里面配置的
		serve("/myServlet").with(MyServlet.class) ;
	}
}
(4)定义一个Servlet
package guice.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.inject.Singleton;
//由于Servlet是单例的,所以必须加上@Singleton注解,不然会报错
@Singleton
public class MyServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp) ;
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.getWriter().write("I am MtServlet print information to front page.") ;
	}
}



(4)启动web,然后在浏览器里面输入(GuiceWeb是我这个web的工程名)

http://localhost:8080/GuiceWeb/myServlet

(5)得到的结果是:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值