乐观 发表于 2015-1-18 11:21:03

了解下JAVA的怎样利用spring的autowire为servlet注进Bean

如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,
在使用中一样平常一般的JavaPojo都是由Spring来办理的,以是利用autowire注解来举行注进不会发生成绩,可是有两个工具是破例的,一个是Filter,一个是Servlet,这两样工具都是由Servlet容器来保护办理的,以是假如想和其他的Bean一样利用Autowire来注进的话,是必要做一些分外的工夫的。
关于Filter,Spring供应了DelegatingFilterProxy,以是本文次要报告Servlet的办理。
1、对照直不雅可是不年夜文雅的做法是重写init()办法,在内里利用AutowireCapableBeanFactory来手工告知Spring:我这个Servlet是必要如许的一个Bean的。详细写法:
public void init(ServletConfig servletConfig) throws ServletException {
    ServletContext servletContext = servletConfig.getServletContext();
    WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext.getAutowireCapableBeanFactory();
    autowireCapableBeanFactory.configureBean(this, BEAN_NAME);
}
个中,BEAN_NAME就是必要注进的Bean在spring中注册的名字.
如许写的次要成绩是就是谁人BEAN_NAME,如许写有点自动查找,而不是依附注进的感到。
2、创立一个相似于DelegatingFilterProxy那样的代办署理,经由过程代办署理依据设置来找到实践的Servlet,完成营业逻辑功效。
假定我们有一个Servlet名字叫UserServlet,必要注进一个UserManager,伪代码以下:
public class UserServlet extends HttpServlet {
    @Autowired(required = true)
    private UserManager userManager;
}
第一步:
public class DelegatingServletProxy extends GenericServlet {
    private String targetBean;
    private Servlet proxy;
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        proxy.service(req, res);
    }
    @Override
    public void init() throws ServletException {
        this.targetBean = getServletName();
        getServletBean();
        proxy.init(getServletConfig());
    }
    private void getServletBean() {
        WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
        this.proxy = (Servlet) wac.getBean(targetBean);
    }
}
第二步:
设置web.xml文件,本来UserServlet的设置大抵是如许的:
<servlet>
        <servlet-name>userServlet</servlet-name>
        <servlet-class>com.sample.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>userServlet</servlet-name>
        <url-pattern>/userServlet</url-pattern>
    </servlet-mapping>
如今修正为
<servlet>
        <servlet-name>userServlet</servlet-name>
        <servlet-class>com.sample.DelegatingServletProxy</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>userServlet</servlet-name>
        <url-pattern>/userServlet</url-pattern>
    </servlet-mapping>
注重,spring是依据Servlet的名字来查找被代办署理的Servlet的,以是,起首我们要在UserServlet类后面加上@Component,来告知Srping:我也是一个Bean。假如称号和Web.xml内里界说的纷歧样的话,能够在这里指定Bean的名字,好比:@Component("userServlet")

ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。

小女巫 发表于 2015-1-18 19:56:43

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

若天明 发表于 2015-1-23 07:57:04

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

飘飘悠悠 发表于 2015-1-24 16:42:48

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

第二个灵魂 发表于 2015-1-24 22:24:10

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

飘灵儿 发表于 2015-1-31 15:42:39

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

小妖女 发表于 2015-2-1 17:23:36

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

深爱那片海 发表于 2015-2-4 21:41:25

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

老尸 发表于 2015-2-6 09:40:47

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

小魔女 发表于 2015-2-6 16:55:46

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

金色的骷髅 发表于 2015-2-6 20:05:46

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

透明 发表于 2015-2-7 11:36:09

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

冷月葬花魂 发表于 2015-2-10 07:35:58

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

爱飞 发表于 2015-2-28 04:24:54

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

柔情似水 发表于 2015-3-6 23:42:43

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

若相依 发表于 2015-3-8 13:14:22

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

admin 发表于 2015-3-13 06:07:12

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

再见西城 发表于 2015-3-20 14:06:07

是一种突破用户端机器环境和CPU
页: [1]
查看完整版本: 了解下JAVA的怎样利用spring的autowire为servlet注进Bean