guice基本使用,guice整合guice-servlet,web开发(五)

介绍

Guice Servlet 为使用web应用程序和Servlet容器提供了一个完整的模式。. Guice‘s servlet 扩展允许从你的servlet应用中完全淘汰web.xml,并且具有类型安全(type-safe)的优势。 符合Java方式的配置你的servlet和filter组件。

这不仅在于可以使用更好的API来配置你的web应用程序,而且也在于在web应用组件中加入依赖注入,意味着你的servlet和filter得益于以下几个方面:

  • 构造方法注入(Constructor injection)
  • 类型安全,更符合习惯的配置方式(Type-safe, idiomatic configuration)
  • 模块化(打包和发布个性化的Guice Servlet类库
  • Guice 面向切面编程

在标准的servlet生命周期都将受益。

guice servlet简化了传统servlet的开发。

具体如下:

 1   <filter>
 2     <filter-name>guiceFilter</filter-name>
 3     <filter-class>com.google.inject.servlet.GuiceFilter</filter-class><!--这个是guice servlet的过滤器-->
 4   </filter>
 5   <filter-mapping>
 6     <filter-name>guiceFilter</filter-name>
 7     <url-pattern>/*</url-pattern>
 8   </filter-mapping>
 9   <listener>
10     <listener-class>com.ming.core.web.listener.GoogleGuiceServletContextListener</listener-class><!--这个是用于注册module及servlet的-->
11   </listener>
 1 package com.ming.core.web.listener;
 2
 3 import com.google.inject.Guice;
 4 import com.google.inject.Injector;
 5 import com.google.inject.servlet.GuiceServletContextListener;
 6 import com.ming.user.UserModule;
 7
 8 public class GoogleGuiceServletContextListener extends GuiceServletContextListener {
 9
10     @Override
11     protected Injector getInjector() {
12
13         return Guice.createInjector(new UserModule());
14         //如果绑定多个module,需要像下面这样就可以了
15         //return Guice.createInjector(new UserModule(),new UserModule());
16     }
17
18 }
 1 package com.ming.user;
 2
 3 import com.google.inject.AbstractModule;
 4 import com.google.inject.servlet.ServletModule;
 5 import com.ming.core.web.filter.EncodeFilter;
 6 import com.ming.user.action.UserServlet;
 7 public class UserModule extends AbstractModule {
 8
 9
10     @Override
11     protected void configure() {
12         install(new ServletModule(){
13             @Override
14             protected void configureServlets() {
15
16                 //配置你访问的servlet
17                 //serve("/UserServlet").with(UserServlet.class);
18
19                 //如果你一个servlet拥有多个访问地址,这样配置就可以了
20                 serve("/UserServlet","/UserController").with(UserServlet.class);
21
22                 //如果你想你的url支持正则匹配,可以像下面这样写
23                 //serveRegex("^user").with(UserServlet.class);
24
25                 //同理filter配置如下
26                 //filter("/encodeFilter").through(EncodeFilter.class);
27
28                 //多个地址
29                 //filter("/encodeFilter","/haha").through(EncodeFilter.class);
30
31                 //支持正则
32                 //filterRegex("^aaa").through(EncodeFilter.class);
33
34             }
35         });
36
37     }
38
39
40 }
 1 package com.ming.user.action;
 2
 3 import java.io.IOException;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6
 7 import javax.servlet.ServletException;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 import com.google.inject.Inject;
13 import com.google.inject.Singleton;
14 import com.ming.user.entity.User;
15 import com.ming.user.service.UserService;
16
17 /**
18  *
19  * @author mingge
20  *
21  */
22 @Singleton
23 public class UserServlet extends HttpServlet {
24
25
26     private static final long serialVersionUID = 1L;
27
28     @Inject
29     private UserService userService;
30
31     protected void doGet(HttpServletRequest request, HttpServletResponse response)
32             throws ServletException, IOException {
33
34         String account = request.getParameter("account");
35         int userId = Integer.valueOf(request.getParameter("userid"));
36         User u = new User();
37         u.setAccount(account);
38         u.setUser_id(userId);
39         List<User> ulist=new ArrayList<>();
40         ulist.add(u);
41         try {
42             userService.add(u);
43             System.out.println("ok");
44         } catch (Exception e) {
45             System.out.println("error");
46             e.printStackTrace();
47             // 注意:调用service层的方法出异常之后,继续将异常抛出,这样在TransactionFilter就能捕获到抛出的异常,继而执行事务回滚操作
48             throw new RuntimeException(e);
49         }
50
51     }
52
53     protected void doPost(HttpServletRequest request, HttpServletResponse response)
54             throws ServletException, IOException {
55
56         doGet(request, response);
57     }
58
59 }

看起简单吧。具体例子下载:http://pan.baidu.com/s/1geMXE1t

时间: 2024-10-12 21:44:54

guice基本使用,guice整合guice-servlet,web开发(五)的相关文章

Web开发技术发展历史

Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互联网".Web是World Wide Web的简称,中文译为万维网."万维网"和我们经常说的"互联网"是两个联系极其紧密但却不尽相同的概念.今天"互联网"三个字已经承载了太多的内涵,提到互联网,我们通常想到的一种战略思维,或者是一种颠覆传统的商

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.

Spring整合web开发(6)

正常整合Servlet和Spring没有问题的但是每次执行Servlet的时候加载Spring配置,加载Spring环境. 解决办法:在Servlet的init方法中加载Spring配置文件? 当前这个Servlet可以使用,但是其他的Servlet的用不了了!!! 将加载的信息内容放到ServletContext中.ServletContext对象时全局的对象.服务器启动的时候创建的.在创建ServletContext的时候就加载Spring的环境. ServletContextListene

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

Spring Boot 整合 Web 开发

这一节我们主要学习如何整合 Web 相关技术: Servlet Filter Listener 访问静态资源 文件上传 文件下载 Web三大基本组件分别是:Servlet,Listener,Filter.正常来说一旦我们用了框架,这三个基本就用不上了,Servlet 被 Controller 代替,Filter 被拦截器代替.但是可能在一些特殊的场景下不得不使用这三个基本组件时,Spring Boot 中要如何去引用呢?下面我们来一起学习一下. Spring Boot 集成了 Servlet 容

saiku - 源码整合[普通WEB项目]

saiku源码的整合分为[普通web项目整合]和[maven整合]两种 本节主要是讲解如何整合为普通的web项目 转载自:http://blog.csdn.net/gsying1474/article/details/39018251 一 准备以下工具 和 源码 MyEclipse 10 saiku2.5 源码 saiku-server-foodmart-2.5.zip 二 新建web工程saiku 在MyEclipse中新建一个web项目,项目名必须为 saiku(因为saiku的UI会默认找

JSP/Servlet Web应用中.properties文件的放置与读取

本地项目在本地类库中,我经常使用当前目录来放置.properties文件,这时调用方只要引用我的jar,并且将我的.properties放在他的classpath里面即可,比如:p.load(new FileInputStream("HanLP.properties"));这样类似下图的项目结构就可以跑起来:JSP/Servlet Web项目但是到了Web项目时,情况大不相同.在Tomcat下,classpath里只含apache-tomcat-8.0.14\bin目录下有限的...

百度地图、ECharts整合HT for Web网络拓扑图应用

直击现场 百度地图.ECharts整合HT for Web网络拓扑图应用 发表于3周前(2015-03-23 01:32)   阅读(1320) | 评论(5) 78人收藏此文章, 我要收藏 赞8 慕课网,程序员升职加薪神器,点击免费学习 摘要 前一篇谈及到了ECharts整合HT for Web的网络拓扑图应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图.ECharts和HT for Web三者结合起来也做一个类似空气质量报告的报表+拓扑图应用. high

Spring整合Web开发

时间:2017-2-2 02:17 --导入jar包 1.导入Spring开发基本jar包    spring-beans-3.2.0.RELEASE.jar spring-context-3.2.0.RELEASE.jar spring-core-3.2.0.RELEASE.jar spring-expression-3.2.0.RELEASE.jar 2.导入commons-logging.jar 3.导入Spring Web开发jar包    spring-web-3.2.0.RELEAS