随着JEE6规范上市,在企业应用程序领域中如何开发应用程序方面发生了一些重大变化。 在本文中,我将介绍有关Web应用程序开发的一些更改。
首先,请告别web.xml部署描述符(至少是其中的一部分)。 好吧,它并不是不赞成使用,但是随着注释的使用及其使用的增加,新规范允许我们使用注释来定义我们的配置,尽管诸如欢迎文件列表,上下文参数等仍然需要去做。在您的web.xml中。 可用的注释有;
- @WebServlet
- @WebFilter
- @WebInitParam
- @WebListener
- @MultipartConfig
在本文中,我将检查@WebServlet和@WebFilter批注。 让我们看看在web.xml时代通常如何映射servlet。
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
使用Servlet 3.0规范,现在配置Servlet就像注释扩展HttpServlet的类一样容易。 让我们看一下它的样子;
@WebServlet('/student')
public class StudentServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 2276157893425171437L;
@Override
protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
StringBuilder response = new StringBuilder(500);
response.append('<html><body>').append('Registered Student : ').append(arg0.getParameter('txtName')).append('</body></html>');
arg1.getOutputStream().write(response.toString().getBytes());
arg1.getOutputStream().flush();
arg1.getOutputStream().close();
}
}
您只需要@WebServlet批注。 为了使它起作用,该类应该驻留在WEB-INF / classes文件夹中,或者驻留在WEB-INF / lib文件夹中的jar中。 接下来,让我们看看如何配置带有注释的过滤器。
package com.blog.example.servlettest;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter('/student')
public class StudentFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
if(arg0.getParameter('txtName')==null || arg0.getParameter('txtName').isEmpty())
{
arg1.getWriter().append('Invalid name supplied');
arg1.getWriter().flush();
arg1.getWriter().close();
}
else
{
arg2.doFilter(arg0, arg1);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
再次非常容易。 仅作为注释即可通知它为过滤器。 请注意,这里我们实现了Filter接口。 该值或urlPatterns应该可用。 根据规范,同时使用两者都是非法的。
在接下来的几周中,我将介绍JEE6提供的其他新注释,并结合使用它们的完整示例进行总结。 JEE6是否取代Spring框架本身并不是一个问题,但是我相信我们将会看到两者之间的激烈竞争。 注释vs xml的争论已或多或少地解决了,每个人都倾向于拥有自己的立场。 我相信这两个方面的知识对应用程序都会有所帮助。
您可以下载并运行我已在此处上传的示例示例。 如果您使用的是JBoss-AS7 ,则只需在独立模式下运行应用程序服务器,然后执行mvn软件包jboss-as:deploy并将浏览器指向http:// localhost:{port} /servlet3.0 。
今天就是这样。 感谢您的阅读,如果您有任何意见或改进建议,请留下评论。
祝你有美好的一天!
参考:在My My Journey Through IT博客上,从我们的JCG合作伙伴 Dinuka Arseculeratne中了解Servlet 3.0的新增功能 。
翻译自: https://www.javacodegeeks.com/2012/12/checking-out-what-is-new-with-servlet-3-0.html