标签: servlets

在序列化方面,Spring会话范围的bean(控制器)和对服务的引用

  • 标准案例 - 你有一个控制器(@Controller)@Scope("session").
  • 例如,通常期望放入会话中的类实现,Serializable以便在服务器重新启动时可以物理存储它们
  • 如果控制器实现Serializable,这意味着它所引用的所有服务(其他spring bean)也将被序列化.它们通常是代理,引用了交易管理器,实体管理器工厂等.
  • 某些服务甚至控制器ApplicationContext通过实现来保持对引用的引用并不是不太可能ApplicationContextAware,因此这可以有效地意味着整个上下文被序列化.并且鉴于它拥有许多连接 - 即不能通过思想序列化的东西,它将在腐败状态下恢复.

到目前为止,我大多忽略了这些问题.最近我想到声明我所有的spring依赖项transientreadResolve()通过静态实用程序类将它们重新WebApplicationContextUtils导入,并将请求/ ServletContext保存在ThreadLocal.这很乏味,但它保证了,当反序列化对象时,它的依赖关系将与当前应用程序上下文"保持同步" .

是否有任何公认的做法,或任何序列化春季背景部分的指南.

请注意,在JSF中,托管bean(~controller)是有状态的(与基于动作的Web框架不同).所以也许我的问题更多的是JSF,而不是spring-mvc.

java jsf serialization spring servlets

43
推荐指数
3
解决办法
3万
查看次数

javax.servlet.jsp.PageContext无法解析为类型

我在jsp页面中看到以下错误 -

javax.servlet.jsp.PageContext cannot be resolved to a type
javax.servlet.jsp.JspException cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)

我看过一篇关于此的帖子,并尝试了一些建议的事情.BalusC提供了很好的输入 - JSTL1.2和Standard.jar不能一起使用.我做了这个,它解决了一段时间的问题 - 但它再次出现.我不确定我是否还有罐头碰撞.我已经将所有jar定义为Maven中的依赖项.以下是我指定pom.xml的依赖项 -

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.38</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.15</version>
        <exclusions>
            <exclusion>
                <groupId>javax.jms</groupId>
                <artifactId>jms</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId> …
Run Code Online (Sandbox Code Playgroud)

jsp servlets jstl maven

43
推荐指数
3
解决办法
9万
查看次数

如何在Content-Disposition标头中设置包含空格的文件名

我有这段代码:

resp.addHeader("Content-Disposition", "inline; filename=" + fileName);
Run Code Online (Sandbox Code Playgroud)

当文件名是"a_b_c.doc"或"abc.doc"时,正确显示下载文件的名称.但是,当文件名是"abc .doc"时,下载文件的名称只是"a".

我们怎么解决这个问题?

java filenames servlets download

43
推荐指数
2
解决办法
2万
查看次数

Servlet过滤器:如何从servletRequest获取所有头文件?

这就是我的WebFilter样子

@WebFilter("/rest/*")
public class AuthTokenValidatorFilter implements Filter {

    @Override
    public void init(final FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
        final Enumeration<String> attributeNames = servletRequest.getAttributeNames();
        while (attributeNames.hasMoreElements()) {
            System.out.println("{attribute} " + servletRequest.getParameter(attributeNames.nextElement()));
        }

        final Enumeration<String> parameterNames = servletRequest.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            System.out.println("{parameter} " + servletRequest.getParameter(parameterNames.nextElement()));
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图在网上找到如何获得HTTP headers来自请求的价值.

我没有找到任何东西,所以我试图枚举servletRequest.getAttributeNames()servletRequest.getParameterNames() …

java servlets java-ee servlet-filters

43
推荐指数
3
解决办法
6万
查看次数

获取由Servlet转发的JSP中的请求URL

如何在JSP中获取由Servlet转发的请求URL?

如果我在JSP中运行以下代码,

System.out.println("servlet path= " + request.getServletPath());
System.out.println("request URL= " + request.getRequestURL());
System.out.println("request URI= " + request.getRequestURI());
Run Code Online (Sandbox Code Playgroud)

然后我得到JSP的服务器端路径.但是我想在浏览器的地址栏中看到URL.我可以在转发到JSP的Servlet中获取它,但我希望在JSP中获取它.

url jsp servlets

42
推荐指数
4
解决办法
12万
查看次数

提交HTML表单时如何将数据从JSP传输到servlet

我有一个带有HTML表单的JSP页面:

<form action="SERVLET">
    <input type="text" name="name"/><br>        
    <input type="text" name="group"/>
    <input type="text" name="pass"/>
    <input type="submit" value="submit">            
</form>
Run Code Online (Sandbox Code Playgroud)

如何在servlet中获取这些数据并将它们添加到数据库中?

forms jsp servlets

42
推荐指数
1
解决办法
13万
查看次数

cvc-complex-type.2.4.a:从元素'init-param'开始发现无效内容

这是我的web.xmlxsd

<?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
Run Code Online (Sandbox Code Playgroud)

这是servlet节点

<servlet>
    <servlet-name>spring1</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param> <!-- here is a problem -->
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
</servlet>
Run Code Online (Sandbox Code Playgroud)

在标记的行上xml验证器说

cvc-complex-type.2.4.a:从元素'init-param'开始发现无效内容.其中一个'{" http://java.sun.com/xml/ns/javaee ":启用," http://java.sun.com/xml/ns/javaee ":async-supported," http:/ /java.sun.com/xml/ns/javaee ":运行为," http://java.sun.com/xml/ns/javaee ":安全角色引用," HTTP://java.sun .com/xml/ns/javaee ":multipart-config}'是预期的.

有什么问题,如何更正此错误?

xsd web.xml servlets init-parameters

42
推荐指数
2
解决办法
5万
查看次数

请求调度概念的包含和转发机制之间的区别?

Forward():这可以通过Request&ServeletContext以两种方式完成.将servlet中的请求转发到服务器上的另一个资源(servlet,JSP文件或HTML文件).转发是在服务器端完成的,没有客户端的知识.

当您调用转发请求时,请求将被发送到服务器上的另一个资源,而不会通知客户端其他资源将处理该请求.此过程完全在Web容器中进行.

只是

include:将在我们当前的文件中包含另一个文件

forward:将当前请求转发到转发页面

java servlets forward java-ee

42
推荐指数
4
解决办法
7万
查看次数

org.apache.catalina.LifecycleException:无法启动组件[StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ CollegeWebsite]]

org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/CollegeWebsite]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:962)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1603)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:469)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:332)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:597)
    at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.UnsupportedClassVersionError: com/Servlets/AddCourse : Unsupported major.minor version 51.0 (unable to load class com.Servlets.AddCourse)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2893)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    at org.apache.catalina.startup.WebAnnotationSet.loadClass(WebAnnotationSet.java:480)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:130)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:66)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:381)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:858)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 11 more …
Run Code Online (Sandbox Code Playgroud)

java jsp tomcat servlets unsupported-class-version

42
推荐指数
2
解决办法
27万
查看次数

如何在两个或多个Servlet之间共享变量或对象?

我想知道是否有一些方法可以在两个或更多Servlet之间共享变量或对象,我的意思是一些"标准"方式.我认为这不是一个好习惯,但是构建原型是一种更简单的方法.

我不知道它是否取决于所使用的技术,但我将使用Tomcat 5.5


我想分享一个简单类的对象的Vector(只是公共属性,字符串,整数等).我的目的是拥有像DB一样的静态数据,显然它会在Tomcat停止时丢失.(它只是用于测试)

java servlets web-applications

41
推荐指数
3
解决办法
6万
查看次数