博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM框架之关于使用JSP作为视图展示问题解决方案
阅读量:6834 次
发布时间:2019-06-26

本文共 3636 字,大约阅读时间需要 12 分钟。

JSP作为视图层展示数据,已经有很长一段时间了,不管是在校学习还是企业工作,总会或多或少接触这个。特别是对于一些传统中小型或者一些几年前的企业而言,有很多使用JSP作为视图展示层。

JSP本质是就是Servlet,Servlet可以说也是JSP。

 

用图描述就是如下:

通过上述两张图,足以知道,不管是JSP还是Servlet最后都是以HTML的形式在前端显示。

关于JSP和Servlet学习教程可以参考这个教程:http://www.runoob.com/jsp/jsp-tutorial.html

 

JSP作为视图展示数据,通常情况下会有这么几个问题?

1.如果是SpringMVC拦截条件为*.do,可以不考虑静态资源被拦截问题,如果是/的话,就不得不考虑了。通常情况下,解决办法如下:

在SpringMVC的配置文件中写:

或者是在web.xml这么写

default
/view/
/assets/
/components/*
/header/*
/layouts/*
/snippets/*
/swagger-ui/*
*.html

需要SpringMVC配置文件补充<mvc:default-servlet-handler/>

如果是这样使用,需要注意的是必须放在SpringMVC的前端控制器前面,否则是不起作用的。

 

2.使用jsp视图解析器,路径问题需要注意

解决办法:在web.xml配置或者直接在jsp页面每个静态资源../或者../../替换为${pageContext.request.contextPath}

${pageContext.request.contextPath},因为通过它直接就获得上下文路径。

还有就是新建两个类定义全局路径,也是可以解决这个问题的。

 

BaseListener.java

package com.blog.listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;/** * Application Lifecycle Listener implementation class BaseListener * */public class BaseListener implements ServletContextListener {    /**     * Default constructor.      */    public BaseListener() {        // TODO Auto-generated constructor stub    }    /**     * @see ServletContextListener#contextDestroyed(ServletContextEvent)     */    public void contextDestroyed(ServletContextEvent arg0)  {          // TODO Auto-generated method stub    }    /**     * @see ServletContextListener#contextInitialized(ServletContextEvent)     */    public void contextInitialized(ServletContextEvent arg0)  {          // TODO Auto-generated method stub    }    }
ServerStartupListener.java
package com.blog.listener;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;/** * 获取Web应用路径 * @author yc * */public class ServerStartupListener extends BaseListener {    @Override    public void contextInitialized(ServletContextEvent sce) {                // Web应用对象        ServletContext application= sce.getServletContext();                // 获取web应用路径        String path = application.getContextPath();                // 将Web应用路径保存到应用范围中        application.setAttribute("APP_PATH", path);    }    }

 

并在web.xml配置如下监听器即可:

com.blog.listener.ServerStartupListener

该监听器最好放在org.springframework.web.context.ContextLoaderListener监听器下面。

 

3.关于使用jstl标签库问题

注意要引用这个maven依赖

jstl
jstl
1.2

至于为什么要使用jstl,简单的说比<%%>简洁方便,相对灵活,功能也比较强大。

当然了,建议不要滥用,滥用的代价会导致维护起来十分困难。

如果你的jstl是使用1.0版本的话,遇到不能使用的问题可以参考这个链接:https://blog.csdn.net/whh743/article/details/53580954

 

4.视图解析器问题

视图解析一般是没有问题的,除非路径写错了,或者tomcat应用服务器存在问题。不然的话一般配置正确的视图解析器路径,都会正常解析并返回视图数据。

SpringMVC配置文件,正确配置内容如下:

 

如果是将jsp放在WEB-INF下可以这么写:

至于为什么放在WEB-INF下,原因是因为用户不能直接通过浏览器输入URL访问对应的jsp文件或者是其他资源,简单的说这样有利于安全性。

5.关于用户信息保存Session问题,不管是Servlet(JSP)或者是在SPringMVC中,都可以通过如下代码定义Session的属性及其值和获取属性及其值

HttpSession session=request.getSession();session.setAttribute("User", user);
HttpSession session  = request.getSession();session.getAttribute(“名称”);------得到session放入进去的信息。session.getAttributeNames()-----得到session里面所有的信息名称。session.getMaxInactiveInterval()----得到session最大存活时间。seesion.getId();------得到session的id。比较有用的属性,可以实现共享session。session.getCreationTime()-----session创建时间。

小结:

本文主要围绕的是关于JSP视图解析器在实际开发中常见的问题,以供大家参考解决一些问题

  

 

你可能感兴趣的文章
CodeIgniter pdo与postgres原生驱动对bool类型取值是不同的
查看>>
Mysql 数据库表区分大小写问题
查看>>
Linux中命令选项及参数简介
查看>>
什么是openstack的metadata
查看>>
面向海量数据的高并发高可用分层系统架构设计
查看>>
五、JAVA基础--异常、断言、日志
查看>>
利用位运算和指针实现的交换两个数的程序
查看>>
论文规范
查看>>
跟 UMU 一起玩 OpenWRT(高级篇2):不拆机刷不死 U-Boot
查看>>
程序员必知的8大排序(java实现)
查看>>
Ubuntu用户权限修改后只能以客人会话登录
查看>>
objective-c中的方法重载
查看>>
原创:SecureCRT连接linux终端颜色配置
查看>>
<Hibernate> OpenSession 和getCurrentSession 的一些区别
查看>>
Ace Admin改造
查看>>
PHP Memcache配置
查看>>
Centos 7.3 内网时间同步设置
查看>>
nginx的启动、重启
查看>>
右键文本文档消失——解决办法
查看>>
spring源码剖析之Spring Security安全框架
查看>>