如何告诉Maven 2加载Servlet 3.0 API?
我试过了:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我使用http://repository.jboss.com/maven2/但是哪个存储库是正确的?
附录:
它适用于整个Java EE 6 API的依赖项和以下设置:
<repository>
<id>java.net</id>
<url>http://download.java.net/maven/2</url>
</repository>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我更愿意只将Servlet API添加为依赖项,但"Brabster"可能是正确的,Java EE 6配置文件已替换了单独的依赖项.是否有来源证实了这一假设?
在我的Web应用程序中,我必须向一组预定义用户发送电子邮件finance@xyz.com,因此我希望将其添加到.properties文件中并在需要时访问它.这是一个正确的程序,如果是这样,那么我应该在哪里放置这个文件?我正在使用Netbeans IDE,它有两个单独的文件夹用于源文件和JSP文件.
如何使用servlet过滤器来更改传入的servlet请求URL
http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123
至
http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123
?
更新:根据BalusC的以下步骤,我想出了以下代码:
public class UrlRewriteFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
//
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String requestURI = request.getRequestURI();
if (requestURI.startsWith("/Check_License/Dir_My_App/")) {
String toReplace = requestURI.substring(requestURI.indexOf("/Dir_My_App"), requestURI.lastIndexOf("/") + 1);
String newURI = requestURI.replace(toReplace, "?Contact_Id=");
req.getRequestDispatcher(newURI).forward(req, res);
} else {
chain.doFilter(req, res);
}
}
@Override
public void destroy() {
//
}
}
Run Code Online (Sandbox Code Playgroud)
相关条目web.xml如下所示: …
我在这里有点困惑.在我们的应用程序中,我们定义了一些servlet.以下是web.xml其中一个servlet 的摘录:
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>com.foo.framework.axis2.http.FrameworkServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,它的值<load-on-startup>必须是一个正整数才能自动加载.我在谷歌上查了一下,但我遇到的回复只会增加我的困惑.
熟悉的代码:
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我的理解是/*地图http://host:port/context/*.
怎么样/?它肯定不会映射到http://host:port/contextroot.事实上,它会接受http://host:port/context/hello,但拒绝http://host:port/context/hello.jsp.
任何人都可以解释如何http://host:port/context/hello映射?
我想知道每个服务器在生产环境方面的缺点.有没有人有其中一个功能的大问题?性能等我还快速看了一下新的Glassfish,它是否与简单的servlet容器匹配(它似乎至少有一个良好的管理界面)?
我正在使用以下源代码结构的Java EE Web应用程序:
src/main/java <-- multiple packages containing java classes
src/test/java <-- multiple packages containing JUnit tests
src/main/resources <-- includes properties files for textual messages
src/main/webapp/resources <-- includes CSS, images and all Javascript files
src/main/webapp/WEB-INF
src/main/webapp/WEB-INF/tags
src/main/webapp/WEB-INF/views
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是WEB-INF- 它包含web.xml用于设置servlet的XML文件,Spring bean连接上下文以及JSP标记和视图.
我试图理解什么约束/定义这个结构.例如JSP文件总是必须在WEB-INF其他地方或者它们可能在其他地方吗?还有其他可能进入的地方WEB-INF吗?维基百科的WAR文件条目提到classes了Java类和libJAR文件 - 除了其他源文件位置之外,还不确定我是否完全掌握了这些文件.
如果我们在WAR自己定义特定于webapp的servlet过滤器web.xml,那么过滤器的执行顺序将与它们在中定义的顺序相同web.xml.
但是,如果我们使用@WebFilter注释定义这些过滤器,过滤器的执行顺序是什么,我们如何确定执行顺序?
我是HTTP POST到URL http:// laptop:8080/apollo/services/rpc?cmd = execute
使用POST数据
{ "jsondata" : "data" }
Run Code Online (Sandbox Code Playgroud)
Http请求的Content-Type为 application/json; charset=UTF-8
如何从HttpServletRequest获取POST数据(jsondata)?
如果我枚举请求参数,我只能看到一个参数,即"cmd",而不是POST数据.