Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过除filename.jsp以外的其他url模式运行jsp文件?_Java_Jsp_Blogs - Fatal编程技术网

Java 如何通过除filename.jsp以外的其他url模式运行jsp文件?

Java 如何通过除filename.jsp以外的其他url模式运行jsp文件?,java,jsp,blogs,Java,Jsp,Blogs,我想在jsp中创建一个类似CMS的博客。 因此,我有一个“post.jsp”,它将动态显示内容。 我有一个数据库,其中存储了一些url模式及其内容 例如,数据库存储: url: www.example.com/abc content: hello url: www.example.com/xyz content: world 我想这样做,当用户输入“www.example.com/abc”时,它将运行“post.jsp”,并在数据库中检查url是否存在。如果存在,则将显示“hello”,否则

我想在jsp中创建一个类似CMS的博客。 因此,我有一个“post.jsp”,它将动态显示内容。 我有一个数据库,其中存储了一些url模式及其内容

例如,数据库存储:

url: www.example.com/abc
content: hello

url: www.example.com/xyz
content: world
我想这样做,当用户输入“www.example.com/abc”时,它将运行“post.jsp”,并在数据库中检查url是否存在。如果存在,则将显示“hello”,否则显示404错误/

类似地,如果用户输入“www.example.com/xyz”,它将再次运行“post.jsp”,如果url存在,那么它将显示“world”else 404 error

如果url模式中没有html或jsp之类的扩展,那么每次url都应该运行“post.jsp”。如果用户输入了url“www.example.com/contact.jsp”,那么它应该在不输入“post.jsp”的情况下运行contact.jsp,因为url模式包含.jsp扩展名

希望你能理解我的要求。如何做到这一点

我将在我的web.xml中定义一个JSP/servlet,以便在调用未找到的URL时调用它。在该Java代码中,我将执行类似的操作(伪代码!):

请确保没有人能够使用此机制注入危险的SQL!
这需要如何实现在很大程度上取决于您使用的环境(Java版本、Servlet版本、框架、应用程序服务器)

所以基本上您想要建立一些Java代码,以便为任何打开的url调用这些代码?然后url将被拆分,斜杠后的所有内容都将在数据库中搜索?没错..但是Java代码将仅在url没有任何扩展名的情况下运行每次输入url时该代码将如何运行?因为这段代码将用“post.jsp”编写,并且用户输入的url将不包含任何post.jspi,这意味着如何将404页面映射到web.xml中的jsp页面,这是您在web.xml中指定的。您将代码放入post.jsp,例如,当调用post.jsp时,Tomcat将知道如何调用此代码。然后定义代码(可以与post.jsp中的代码相同)并将其映射到被调用的任何其他url。在这种情况下,Tomcat也知道该怎么做。您应该阅读更多关于url映射的内容,以便更好地理解这一点,在这种情况下可能会有所帮助。刚才看到stackoverflow建议使用以下相关链接:没错。然后您可以决定为哪个url提供哪些内容。
String request = getRequestUrl();

if( !request.endsWithIgnoreCase( ".jsp" ) && !request.endsWithIgnoreCase( ".htm") {
  String tagToSearch = request.getEverythingAfterSlash();
  String content = Db.searchFor( tagToSearch );

  Response.write( content );
}