【0】了解servlet
网上虽然有写servlet有各种各样的文章,但是所要表述的就是对servlet的原理学习,随便查查都能了解个大概(但是建议看专门阐述servlet的网站中,那更全面,更权威http://www.runoob.com/servlet/servlet-life-cycle.html),所以在这不过多阐述,只说明在实际开发中遇到的小问题和解决办法。
Servlet 生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
- Servlet 通过调用 init () 方法进行初始化。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 通过调用 destroy() 方法终止(结束)。
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
【1】公司项目总的结构
在spring架构的MVC情况下,(spring,springmvc,hibernate)客户端请求是由web.xml配置,从action进入service进行业务逻辑处理,然后与底层dao数据交互,分为controller/service/dao三层。想用servlet替换controller使用,需要解决如何在servlet中使用注入到spring上下文中的service bean。
首先在web.xml中
<!-- 保单资料导出-->
<!-- 配置-->
<
servlet
>
<
description
></
description
>
<
display-name
>
UIDownloadData
</
display-name
>
<
servlet-name
>
UIDownloadData
</
servlet-name
>
<
servlet-class
>
com.sinosig.n02.n01service.printmanager.web.UIDownloadData
</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
UIDownloadData
</
servlet-name
>
<
url-pattern
>
/UIDownloadData
</
url-pattern
>
</
servlet-mapping
>
<!-- 保单资料导出-->
|
【2】
刚开始servlet中存在doGet(),doPost(),直接用该uIPolicyDownloadService 会报空指针异常,出现 javax.servlet.ServletException异常,是因为servlet中调用service
@Autowired
private
UIPolicyDownloadService
uIPolicyDownloadService
;
|
【3】
servlet不能直接使用serviceImpl,因为servlet不能注入,可手动注入。
加入init()可初始化自动注入。
@Override
public
void
init(ServletConfig
config
)
throws
ServletException {
super
.init(
config
);
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(
this
,
config
.getServletContext());
}
|
之后即可正常使用service。