在我对Servlet的理解中,Servlet将由Container实例化,其init()方法将被调用一次,并且servlet将像单例一样生存直到JVM关闭.
我不希望我的servlet被序列化,因为它将在app服务器恢复或正常启动时构建为新的.servlet应该不包含特定于会话的成员,因此将其写入磁盘并重新实例化是没有意义的.这有实际用途吗?
我担心的是,我在其中放置了一些不可序列化的字段,然后我的应用程序将在生产环境中神秘地失败,在该环境中将发生不同类型的会话复制.
我对编写JSP/Servlet时使用的技巧感兴趣.我将开始:
我最近发现了如何在另一个标记的属性中包含一个JSP标记的输出:
<c:forEach items="${items}">
<jsp:attribute name="var">
<mytag:doesSomething/>
</jsp:attribute>
<jsp:body>
<%-- when using jsp:attribute the body must be in this tag --%>
</jsp:body>
</c:forEach>
Run Code Online (Sandbox Code Playgroud) 要使用我的静态文件(CSS,JS),我必须编写绝对路径/AppName/templates/style/main.css.有什么解决方案,我可以写相对路径style/main.css吗?
Servlet中有过滤器和监听器功能.我想知道Filter和Listener之间的确切区别.
请解释之间的差异jsp:forward和redirect.
每种情况都发生了什么?
我正在编写一个代码,其任务是检索请求的URL或完整路径.我写了这段代码:
HttpServletRequest request;//obtained from other functions
String uri = request.getRequestURI();
if (request.getQueryString() != null)
uri += "?" + request.getQueryString();
Run Code Online (Sandbox Code Playgroud)
所以,当我浏览http://google.com?q=abc它是可以的(正确的).但是当我浏览时有问题https://google.com.的价值uri是http://google.com:443google.com:443,这样的程序时,不仅不HTTPS被使用.
并且输出相同request.getRequestURL().toString().
解决办法是什么?
我在我的JSF应用程序中使用Servlet过滤器.我的应用程序中有三组Web页面,我想在Servlet过滤器中检查这些页面的身份验证:
我的文件夹
/Admin/ *.xhtml
/Supervisor/*.xhtml
/Employee/*.xhtml
Run Code Online (Sandbox Code Playgroud)
我写得web.xml像
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.ems.admin.servlet.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/Employee/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/Admin/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/Supervisor/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
但要求如此
http://localhost:8080/EMS2/faces/Html/Admin/Upload.xhtml
Run Code Online (Sandbox Code Playgroud)
没有进入过滤器.
我必须为这3个文件夹提供安全性.
如何解决这个问题呢 ?
在HttpServletRequest中,getParameterMap返回所有查询字符串参数的Map和发布数据参数.
有没有办法获得一个只有查询字符串参数的Map?我试图避免使用getQueryString并解析出值.
是否有可能在tomcat的url中关闭jsessionid?jsessionid似乎对搜索引擎不太友好.
我无法让tomcat7编译jsps.直到运行示例servlet就好了,服务启动并运行.我正在运行oracle java 8.
谁能指出我正确的方向?
这是堆栈跟踪:
type Exception report
message Unable to compile class for JSP:
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of …Run Code Online (Sandbox Code Playgroud) servlets ×10
java ×6
jsp ×4
tomcat ×2
contextpath ×1
forward ×1
httprequest ×1
jsessionid ×1
query-string ×1
redirect ×1
resources ×1
serializable ×1
session ×1
url-pattern ×1