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的开发。
具体如下:
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class><!--这个是guice servlet的过滤器-->
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.ming.core.web.listener.GoogleGuiceServletContextListener</listener-class><!--这个是用于注册module及servlet的-->
</listener>
package com.ming.core.web.listener; import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;
import com.ming.user.UserModule; public class GoogleGuiceServletContextListener extends GuiceServletContextListener { @Override
protected Injector getInjector() { return Guice.createInjector(new UserModule());
//如果绑定多个module,需要像下面这样就可以了
//return Guice.createInjector(new UserModule(),new UserModule());
} }
package com.ming.user; import com.google.inject.AbstractModule;
import com.google.inject.servlet.ServletModule;
import com.ming.core.web.filter.EncodeFilter;
import com.ming.user.action.UserServlet;
public class UserModule extends AbstractModule { @Override
protected void configure() {
install(new ServletModule(){
@Override
protected void configureServlets() { //配置你访问的servlet
//serve("/UserServlet").with(UserServlet.class); //如果你一个servlet拥有多个访问地址,这样配置就可以了
serve("/UserServlet","/UserController").with(UserServlet.class); //如果你想你的url支持正则匹配,可以像下面这样写
//serveRegex("^user").with(UserServlet.class); //同理filter配置如下
//filter("/encodeFilter").through(EncodeFilter.class); //多个地址
//filter("/encodeFilter","/haha").through(EncodeFilter.class); //支持正则
//filterRegex("^aaa").through(EncodeFilter.class); }
}); } }
package com.ming.user.action; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.ming.user.entity.User;
import com.ming.user.service.UserService; /**
*
* @author mingge
*
*/
@Singleton
public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Inject
private UserService userService; protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { String account = request.getParameter("account");
int userId = Integer.valueOf(request.getParameter("userid"));
User u = new User();
u.setAccount(account);
u.setUser_id(userId);
List<User> ulist=new ArrayList<>();
ulist.add(u);
try {
userService.add(u);
System.out.println("ok");
} catch (Exception e) {
System.out.println("error");
e.printStackTrace();
// 注意:调用service层的方法出异常之后,继续将异常抛出,这样在TransactionFilter就能捕获到抛出的异常,继而执行事务回滚操作
throw new RuntimeException(e);
} } protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }
看起简单吧。具体例子下载:http://pan.baidu.com/s/1geMXE1t
guice基本使用,guice整合guice-servlet,web开发(五)的更多相关文章
- web开发(五) JSP详解(四大作用域九大内置对象等)
在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6427759.html>,在此仅供学习参考之用. 一.JS ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
- 【转载】Web开发技术发展历史-版本1
原文在这里. Web开发技术发展历史 Web的诞生 提到Web,不得不提一个词就是“互联网”.Web是World Wide Web的简称,中文译为万维网.“万维网”和我们经常说的“互联网”是两个联系极 ...
- Web 开发工具类(2): HttpClientUtils
HttpClientUtils 整合了一些 web开发中常用的httpClient操作: package com.evan.common.utils; import java.io.IOExcepti ...
- Spring整合web开发
正常整合Servlet和Spring没有问题的 public class UserServlet extends HttpServlet { public void doGet(HttpServlet ...
- Spring Boot 整合 Thymeleaf 完整 Web 案例
Thymeleaf 是一种模板语言.那模板语言或模板引擎是什么?常见的模板语言都包含以下几个概念:数据(Data).模板(Template).模板引擎(Template Engine)和结果文档(Re ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- Spring Boot 整合 Web 开发
这一节我们主要学习如何整合 Web 相关技术: Servlet Filter Listener 访问静态资源 文件上传 文件下载 Web三大基本组件分别是:Servlet,Listener,Filte ...
- 【Java Web开发学习】Spring4整合thymeleaf视图解析
[Java Web开发学习]Spring4整合thymeleaf视图解析 目录 1.简单介绍2.简单例子 转载:https://www.cnblogs.com/yangchongxing/p/9111 ...
随机推荐
- Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维
原文链接:http://www.ncbi.nlm.nih.gov/pubmed/16873662/ G. E. Hinton* and R. R. Salakhutdinov . Science. ...
- sqlserver where in 在 mysql
) tmp); 主句(select * from (从句 temp) sql的 where in 删除 要更改为 // in( select * from ((select idfrom twhe ...
- Apex语言(七)集合
1.集合 集合是可以存储多个记录数的变量类型. List列表集合可以包含任何数量的数据,与数组类似. Set列表集合包含多个无序的唯一记录数,集合不能具有重复记录,与列表类似. Map地图是一个键值对 ...
- 5G vs AI谁更有前途?
5G vs AI谁更有前途? 5G通信技术和AI人工智能技术是两个不同层面的技术领域,而它们两者都将在未来20年内对世界的发展有着革命性和里程碑式的影响.未来5G和AI谁更有前途呢? 5G技术的发展和 ...
- 洛谷P1996 约瑟夫问题【队列】
题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,--依次类推,直到所有的人都出 ...
- Spring Cloud系列(三) 应用监控与管理Actuator
Spring Cloud系列(二) 应用监控与管理Actuator 前言:要想使用Spring Cloud ,Spring Boot 提供的spring-boot-starter-actuator模块 ...
- BZOJ 3329 Xorequ (数位DP、矩阵乘法)
手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/article/details/83758728 题目链接 htt ...
- (28)SpringBoot启动时的Banner设置【从零开始学Spring Boot】
对于使用过Spring Boot的开发者来说,程序启动的时候输出的由字符组成的Spring符号并不陌生.这个是Spring Boot为自己设计的Banner: 1. . ____ ...
- (26)改变自动扫描的包【从零开始学Spring Boot】
在开发中我们知道Spring Boot默认会扫描启动类同包以及子包下的注解,那么如何进行改变这种扫描包的方式呢,原理很简单就是: @ComponentScan注解进行指定要扫描的包以及要扫描的类. 接 ...
- Porting from Oracle to MySQL
A potential customer asked my about porting her application from Oracle Database to MySQL. I always ...