相关疑难解决方法(0)

在将表单提交给Servlet后,如何在JSP中保留HTML表单字段值?

在从HTML提交数据后,servlet将这些数据添加到我的数据库并将结果消息转发到JSP页面.我希望在转发之后保留表单中最初提交的值.

在servlet中创建一个对象并添加我收到的所有参数并向JSP发送请求是否明智?还有另一种更好的方法吗?

forms jsp servlets retain

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

JSP到Servlet的关系

书中有很多很多例子,互联网上有关如何将Servlet用作JSP的例子.但是我想知道使用它们的最佳方法是什么,以及对良好架构的思考.

Servlet与JSP之间是否存在一对一的关系?像ASP.NET"Code-Behind"页面一样?

或者更像是ASP.NET MVC,只有一个Servlet控制多个动作,并转发到多个视图?

这是关于纯Java EE开发的问题.请不要简单地建议另一个框架.

java architecture jsp servlets

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

隐藏直接访问JSP页面,但是如何访问目标页面?

下面的URL,所选答案中的第一个内容描述了JSP隐藏.

JSP/Servlet的隐藏功能

我到目前为止了解到我可以将jsp文件放在/ WEB-INF目录下.这样就可以防止用户直接访问http://test.com/WEB-INF/register.jsp(返回404)

我以为我理解但不想并且想要更好地描述,所以我在这里提出问题.

比方说,我有2个jsp文件.

web应用/ ROOT /针对home.jsp

web应用/ ROOT/WEB-INF/register.jsp

注意:/go_register映射到Registerweb.xml(DD)中的servlet类

针对home.jsp

<html>
<body>
  <a href="/go_register">Go to register.jsp</a>
<body>
</html>
Run Code Online (Sandbox Code Playgroud)

register.jsp

<html>
<body>
  <form method="post" action="/process_register">
  <input type="submit">
</form>
<body>
</html>
Run Code Online (Sandbox Code Playgroud)

所以..因为register.jsp位于/ WEB-INF /下,所以只有RequestDispatcher可以访问它.这意味着我需要创建用于转发请求的servlet.

public class Register extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String address = "/WEB-INF/register.jsp";
        request.getRequestDispatcher(address).forward(request, response);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这看起来不对.如果我想将登录页面/WEB-INF/login.jsp添加到home.jsp,为了访问login.jsp,我必须创建另一个servlet 只是为了进入登录页面目的 ???

public class Login extends HttpServlet {

    public void doGet(HttpServletRequest request, …
Run Code Online (Sandbox Code Playgroud)

java jsp servlets hide

5
推荐指数
1
解决办法
6600
查看次数

带有网址模式“ / *”的servlet映射中的StackOverflowError

我有一组JSP页面,我想隐藏.jsp扩展名(经过一番研究后,看来对SEO很有用)。

我遇到的一种解决方案是:

<servlet>
    <servlet-name>mypage</servlet-name>
    <jsp-file>/some-page.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>mypage</servlet-name>
    <url-pattern>/some-page</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

虽然这样做可行,但我相信我必须为网站上的每个jsp页面设置此映射。

我遇到了这里发布的另一个解决方案(易于使用的URL):JSP / Servlet的隐藏功能

...,它使用一个简单的servlet来转发请求。在我的web.xml中,我可以执行以下操作:

<servlet>
    <servlet-name>MyServletName</servlet-name>
    <servlet-class>myservlets.PrettyUrlServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServletName</servlet-name>
    <url-pattern>/myservlet/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

现在的问题是我不想点击以下URL:www.mydomain.com/myservlet/some-page

我想使用以下网址:www.mydomain.com/some-page

所以我将url-pattern更改为“ / *”

<servlet>
    <servlet-name>MyServletName</servlet-name>
    <servlet-class>myservlets.PrettyUrlServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServletName</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

但这会导致无限循环:

    Exception in thread "http-bio-8080-exec-1" java.lang.StackOverflowError
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:219)
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:228)
            .
            .
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:228)
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:228)
            at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
            at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
            at myservlets.PrettyUrlServlet.doGet(PrettyUrlServlet.java:22)
Run Code Online (Sandbox Code Playgroud)

我不确定该如何解决。有任何想法吗?

seo tomcat servlets servlet-filters

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

如何在JSTL if语句中执行按位逻辑?

我需要在JSP中执行按位测试,但是我一生都无法弄清楚如何使用EL进行测试。

我想做类似的事情:

<c:if test="${(test & testFor) == testFor}">
  <h3>Test Passed</h3>
</c:if>
Run Code Online (Sandbox Code Playgroud)

当然,我可以使用普通的JSP语法来做到这一点:

<% if ((test & testFor) == testFor) { %>
  <h3>Test Passed</h3>
<% } %>
Run Code Online (Sandbox Code Playgroud)

java jsp jstl

4
推荐指数
1
解决办法
2856
查看次数

Servlet和JSP.一个简单的要求?

我已经设置了许多Java Server Pages,我想通过添加Process Servlet(扩展HttpServlet)来使用Controller/View系统.

我只是想在ProcessServlet添加一些属性后基本上处理所请求的JSP.

假设我的所有JSP都在名为/ content /的目录中,并且我的web.xml文件有一条规则将/content/*.jsp映射到我的ProcessServlet

我无法找到将所有JSP移动到不同目录(/ content-JSPs /)的方法,这样就可以无需经过ProcessServlet就可以调度它们.

有没有办法基本上将#forward()(其他一些方法?)分配给所请求的JSP,而不必再次通过ProcessServlet?

有点难以相信这种缺乏灵活性的存在.为什么Servlet不能仅仅作为JSP的传递?

我的目标是设置所有内容,以便Web服务器不必为所有JSP创建单独的目录,而为其他所有内容创建另一个目录,即CSS,JavaScript和图像.我想保持目录结构(和URL结构)不变.

java jsp servlets

4
推荐指数
1
解决办法
1316
查看次数

Java:如何将值从类/ bean传递给servlet

我是java新手,我遇到的问题是将类/ bean(存储在arraylist中)传递给servlet.任何想法我怎么能实现这一目标?下面是我的代码.

package myarraylist;

public class fypjdbClass {

String timezone;
String location;

public String getTimezone() {
    return timezone;
}
public void setTimezone(String timezone) {
    this.timezone = timezone;
}
public String getLocation() {
    return location;
}


public void setLocation(String location) {
    this.location = location;
}

public fypjdbClass() {
    super();
    ArrayList<fypjdbClass> fypjdbList = new ArrayList<fypjdbClass>();
    this.timezone = timezone;
    this.location = location;
}

public static void main(String[] args) {


    //Establish connection to MySQL database
    String connectionURL = "jdbc:mysql://localhost/fypjdb";
    Connection connection=null;
    ResultSet rs;

    try …
Run Code Online (Sandbox Code Playgroud)

java servlets jdbc

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

JSP EL和范围属性混淆

我想请你帮忙澄清一些问题.但是,在此之前,有些代码首先是入站代码 - 这是我构建的一个非常简单的登录示例.

容器是Tomcat 5.5.27.

假设输入了正确的用户名和密码组合; 问题在底部.

LoginPage.jsp(入口点 - 视图)

<%@ page language="java" contentType="text/html; charset=windows-1250" pageEncoding="windows-1250"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <link rel="stylesheet" type="text/css" href="mystyle.css" />
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Login Page</title>
 </head>
 <body>
  <div id="page">
   <div id="content_container">
    <div id="content">
     <form action="LoginServlet">
     Username: <input type="text" name="username"><br>
     Password: <input type="text" name="password"><br>
     <input type="submit" value="Submit">
     </form>
    </div>
   </div>
  </div>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

LoginServlet.java(控制器)

public class LoginServlet extends HttpServlet {
   private static final long serialVersionUID = 1L;

public LoginServlet() …
Run Code Online (Sandbox Code Playgroud)

java attributes jsp scope el

2
推荐指数
1
解决办法
5886
查看次数

与RequestDispatcher混淆说浏览器地址栏不会改变

我正在阅读的所有在线参考文献和首页JSP和Servlet书都说明了RequestDispatcher和Redirect(即resoponse.sendRedirect())的特性,如:

"请求调度程序" - 浏览器栏中的URL不会更改.

"重定向" - 用户在浏览器中看到新URL.

但根据我的测试,对于RequestDispatcher,我看到URL发生了变化,所以我不明白它们的真正含义.

使用下面的代码,

  1. 我在http://whatever.com/tmp3.jsp,这就是浏览器中的URL所说的.

  2. 单击按钮调用servlet,然后将数据转发给服务器,然后服务器将响应发送回浏览器,因此浏览器中的URL现在显示 http://whatever.com/register

所以.. URL改了!(从.../tmp3.jsp到... /注册)

任何人都可以向我解释"浏览器中的URL不会改变"的含义吗?

例:

(tmp3.jsp)

<html>
<head>
</head>
<body>
   ${message}
   <!-- click button to send request to servlet -->
   <form method="POST" action="register">
       <input type="submit" value="click!">
   </form>
</body>
</html> 
Run Code Online (Sandbox Code Playgroud)

(servlet的)

package com.masatosan.tmp;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Tmp extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse …
Run Code Online (Sandbox Code Playgroud)

java jsp servlets

2
推荐指数
1
解决办法
2596
查看次数

在jsp页面中查看数据表格数据库表格到表格标签

我想在我的JSP页面工作中应用MVC2 J2EE方法.我想在JSP中分离Servlet中的代码和设计.我面临的问题是我想在JSP页面中显示所有用户及其数据从DB表到HTML表现在我应该如何从JSP页面调用servlet,因为显示页面中没有表单我不知道是否可以使用调度程序,因为管理员将单击<a href>display users,JSP页面应显示所有uesrs.我该怎么做?

jsp servlets

1
推荐指数
1
解决办法
4267
查看次数

标签 统计

jsp ×8

servlets ×8

java ×7

architecture ×1

attributes ×1

el ×1

forms ×1

hide ×1

jdbc ×1

jstl ×1

retain ×1

scope ×1

seo ×1

servlet-filters ×1

tomcat ×1