SSM框架之关于使用JSP作为视图展示问题解决方案

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

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

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

 

用图描述就是如下:

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

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

 

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

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

在SpringMVC的配置文件中写:

 
    <!-- 使用注解 -->
    <mvc:annotation-driven/>
    <mvc:resources location="/static/css/" mapping="/css/**"/>
    <mvc:resources location="/static/images/" mapping="/images/**"/>
    <mvc:resources location="/static/js/" mapping="/js/**"/>
    <mvc:resources location="/static/layer/" mapping="/layer/**"/>
    <mvc:resources location="/static/layui/" mapping="/layui/**"/>

或者是在web.xml这么写

 <!-- 静态资源放行 -->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/view/</url-pattern>
    <url-pattern>/assets/</url-pattern>
    <url-pattern>/components/*</url-pattern>
    <url-pattern>/header/*</url-pattern>
    <url-pattern>/layouts/*</url-pattern>
    <url-pattern>/snippets/*</url-pattern>
     <url-pattern>/swagger-ui/*</url-pattern>
     <url-pattern>*.html</url-pattern>
  </servlet-mapping>

需要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配置如下监听器即可:

  
 
    <listener>
    <listener-class>com.blog.listener.ServerStartupListener</listener-class>
  </listener>

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

 

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

注意要引用这个maven依赖

<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

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

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

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

 

4.视图解析器问题

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

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

    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/pages/" />
        <property name="suffix" value=".jsp" /><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
    </bean>

 

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

    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" /><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
    </bean>

至于为什么放在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视图解析器在实际开发中常见的问题,以供大家参考解决一些问题

  

 

目录
相关文章
|
4月前
|
SQL Java 数据库连接
2-SSM框架篇
Spring框架核心知识点总结,涵盖IOC、DI、Bean作用域、事务管理、AOP、Spring MVC流程及MyBatis相关问题。内容包括控制反转与依赖注入原理、Bean生命周期与线程安全、事务传播机制、JDK与CGLIB代理区别、MyBatis动态SQL与缓存机制等高频面试题。
85 0
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
8月前
|
存储 Java 关系型数据库
ssm151大学生就业信息管理系统+jsp(文档+源码)_kaic
大学生就业信息管理系统基于现代经济快速发展和信息化技术的升级,旨在通过软件工具提升数据管理效率。该系统利用SSM框架、Java语言和Mysql数据库开发,实现数据的科学化、规范化与自动化管理。系统界面简洁美观,功能模块布局合理,提供高效的数据处理能力,并注重数据安全。通过此系统,管理者能够快速处理大量信息,提高工作效率,同时确保数据的安全性和可靠性。关键词:大学生就业信息管理系统;SSM框架;Mysql;自动化。
|
8月前
|
存储 Java 关系型数据库
ssm152家庭财务管理系统设计与实现+jsp(文档+源码)_kaic
本家庭财务管理系统基于现代经济快速发展和信息化技术升级的背景,采用SSM框架、Java语言及Mysql数据库开发。系统旨在帮助用户高效处理大量数据信息,提升财务管理效率,实现数据的整体化、规范化与自动化管理。该系统界面简洁美观,功能布局合理,具备良好的易用性和扩展性,并提供多种安全措施保障数据安全。通过科学化的管理方式,有效减少人工操作失误,提高工作效率。
|
8月前
|
存储 Java 关系型数据库
ssm150旅游网站的设计与实现+jsp(文档+源码)_kaic
本旅游网站基于现代经济快节奏发展和信息化技术的升级,采用SSM框架、Java语言及Mysql数据库开发。它实现了景点、新闻、酒店、飞机票和火车票管理等功能,帮助管理者高效处理大量数据信息,提升工作效率。系统界面简洁美观,功能布局合理,同时提供了数据安全解决方案,确保信息的安全性和可靠性。该网站不仅提高了事务处理效率,还实现了数据的整体化、规范化与自动化管理。关键词:旅游网站;SSM框架;Mysql;自动化。
|
8月前
|
前端开发 Java 数据库连接
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
211 5
|
9月前
|
Java 关系型数据库 MySQL
ssm063基于SSM框架的德云社票务系统的设计与实现(文档+源码)_kaic
基于SSM框架的德云社票务系统旨在解决传统相声订票方式费时费力的问题,提供便捷的在线订票平台。系统采用Java技术、MySQL数据库,结合B/S架构,确保数据安全性和操作简便性。用户可轻松查询、预订相声票务信息,管理员则能高效管理票务和会员信息。该系统功能齐全、运行稳定,适用于现代信息化生活需求,有效提升德云社的票务管理效率与用户体验。
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
185 0
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
280 0

热门文章

最新文章

相关课程

更多