我有这个大问题.每次我向服务器发出新请求时,我当前的会话都会消失.
我检查了很多地方.我找不到问题所在.我还在tomcat和application中都包含了web.xml中的session-config.我还启用了接受我的浏览器的cookie.在每个浏览器中测试.它不起作用.
我只是使用JSP/Servlet开发一个简单的java ee applcation.我在服务器机器中部署到tomcat之后才遇到问题.
请求中的accept-language标头通常是一个很长的复杂字符串 -
例如.
Accept-Language : en-ca,en;q=0.8,en-us;q=0.6,de-de;q=0.4,de;q=0.2
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法在java中解析它?或者API可以帮助我做到这一点?
我试图按照一个Servlet 3.0 教程是指@WebServletContextListener.但是,我在javaee-web-api-6.0.jar依赖项中找不到这样的注释(我正在使用maven).
那么,在哪里@WebServletContextListener?
我没有在真实世界的网络项目上工作.在大学时,我们使用Servlet和Spring进行Java Web开发.在这两个项目中,我们都获得了已配置的web.xml文件,我们只对它们进行了微小的更改.现在我需要从头开始构建一个Web应用程序.我在Eclipse中创建了新的Servlet类,并没有自动创建任何web.xml.然后我用谷歌搜索,我从几个资源中读到了不需要web.xml,但是这个推理被放在几个句子中,所以我不确定使用注释而不是web.xml是没有问题的.如果不需要配置web.xml,我会很高兴,因为我没有自己配置,我想更多地关注业务逻辑.
先感谢您!
我正在维护一个Java Web应用程序.
查看登录代码,它通过HttpServletRequest的getSession()方法从HttpServletRequest中获取HttpSession.(它使用会话中的一些值进行身份验证)
但是我担心会话固定攻击,所以在我使用初始会话后,我想要开始一个新会话或更改会话ID.这可能吗?
请考虑以下代码向客户端发送HTTP 201"创建"响应:
String url = "/app/things?id=42"; // example
response.setStatus(HttpServletResponse.SC_CREATED);
response.setContentType("text/plain");
response.setHeader("Location", url);
response.getWriter().print(url);
Run Code Online (Sandbox Code Playgroud)
它通知客户端创建了一个新的"东西",并且可以在URL上找到它/app/things?id=42.问题是这个URL是相对的.这对于JSP来说是完美的,可以写成如下:
<img src="<c:url value="/things?id=42" />" />
Run Code Online (Sandbox Code Playgroud)
哪个会产生以下HTML:
<img src="/app/things?id=42" />
Run Code Online (Sandbox Code Playgroud)
这是我们想要的网络应用程序.
但我不相信这是我们想要的201响应位置标题.HTTP规范声明:
14.30位置
Location response-header字段用于将收件人重定向到Request-URI以外的位置,以完成请求或标识新资源.对于201(已创建)响应,Location是请求创建的新资源的位置.对于3xx响应,位置应该应该指示服务器自动重定向到资源的首选URI.字段值由单个绝对URI组成.
Run Code Online (Sandbox Code Playgroud)Location = "Location" ":" absoluteURI一个例子是:
Run Code Online (Sandbox Code Playgroud)Location: http://www.w3.org/pub/WWW/People.html
我的问题是如何以适当的方式将servlet的相对URL转换为Location头的绝对URL.
我不相信使用:
request.getServerName() + ":" + request.getServerPort() + url;
Run Code Online (Sandbox Code Playgroud)
是正确的解决方案.应该有一个生成正确输出的标准方法(以便可以应用URL重写等).我不想创建一个hack.
我一直在熟悉FreeMarker,它是Java的模板引擎.
我到了能够通过哈希映射将对象传递给模板引擎的地步.这没关系.但是一旦我尝试将任何类型的多个对象集合传递给FreeMarker,它就会给我一个freemarker.template.TemplateException并抱怨它"预期的集合或序列.作业被评估为freemarker.template.SimpleHash".
根据我在各种资源中阅读的理解,这是可以预料的.
现在,我做了大量的腿部工作,发现很多人评论如何解决这个问题.但是,坦率地说,(a)对于许多例子,我不清楚他们的建议在我的案例中是如何适用的 - 尽管我已经知道Java基础知识很长一段时间我对一些架构很新关于Java Web应用程序和(b)我对哪种方法是最好的方法感到困惑.
在最简化的层面上,我想要做的就是基本上:
我有一个简单的Servlet.
我有一个简单的类(对于这个名为Invoice的例子),它有一些方法和属性.
我想让我的servlet(以某种方式)通过FreeMarker的处理方法呈现这些对象(或这些对象的视图)的实例的列表/数组/序列/散列图.
我想让我的.ftl模板循环遍历list/array/sequence/hashmap并显示方法结果,如下所示:
< # list invoices as invoice>
Invoice note: ${invoice.getNote()}, Invoice Amount:${invoice.getAmount()}
< / # list>
Run Code Online (Sandbox Code Playgroud)
现在,我不一定在寻找快速而肮脏的解决方案.我是FreeMarker的新手,但我希望以优雅和优秀的设计正确的方式做到这一点.所以我愿意完全重新思考这种方法.有人可以帮助我看看我需要做些什么才能让这样的事情发挥作用?
每件事情都很好,我能够运行这个JSP项目,突然发生了一些事情,而且大多数我的servlet都得到了未解决的错误.
我知道它,因为特定的JAR文件无法找到编译..但我的" buildpath "很好,我没有做任何改变..
我陷入了这种境地......
试着
我想在servlet中使用spring autowiring,所以这是我的代码:
@Configurable
public class ImageServlet extends HttpServlet {
@Autowired
private SystemPropertyDao systemPropertyDao;
@Override
public void init() throws ServletException {
String imagePath = systemPropertyDao.findByID(StaticParam.CONTENT_FOLDER);
}
Run Code Online (Sandbox Code Playgroud)
而SystemPropertyDao注释时@Repository
和我的applicationContext.xml:
<context:component-scan base-package="com.basepackage" />
<mvc:annotation-driven />
<context:annotation-config />
<context:spring-configured/>
Run Code Online (Sandbox Code Playgroud)
web.xml:
<servlet>
<servlet-name>imageServlet</servlet-name>
<servlet-class>com.xeno.basepackage.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>imageServlet</servlet-name>
<url-pattern>/myimages/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
有时自动装配工作,有时它不工作(对spring bean systemPropertyDao的引用为null),任何人都可以告诉我,如果我错过了什么?
以下面的URL为例. http://www.test1.example.com
有什么方法可以让"example.com"作为输出.我知道有一种方法servletrequest.getServerName().它给我输出test1.example.com
任何帮助赞赏.
servlets ×10
java ×9
session ×2
tomcat ×2
annotations ×1
autowired ×1
freemarker ×1
http ×1
http-headers ×1
httpresponse ×1
java-ee ×1
jsp ×1
servlet-3.0 ×1
spring ×1
web.xml ×1