GVKun编程网logo

CSS 在 JSP 中不起作用,当放置在文件中时为什么会这样?(css 在 jsp 中不起作用,当放置在文件中时为什么会这样)

1

如果您对CSS在JSP中不起作用,当放置在文件中时为什么会这样?和css在jsp中不起作用,当放置在文件中时为什么会这样感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解CSS在JSP中不起作用,

如果您对CSS 在 JSP 中不起作用,当放置在文件中时为什么会这样?css 在 jsp 中不起作用,当放置在文件中时为什么会这样感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解CSS 在 JSP 中不起作用,当放置在文件中时为什么会这样?的各种细节,并对css 在 jsp 中不起作用,当放置在文件中时为什么会这样进行深入的分析,此外还有关于 与 < jsp:getProperty>、div+css 之 CSS 文本设置 CSS 字体设置 CSS 列表设置 CSS 表格设置 css outline 轮廓、EclipseIndigo上的编译错误:javax.servlet.jsp.JspException,javax.servlet.jsp.PageContext无法解析为一种类型、GET /WEB-INF/jsp/login.jsp 没有映射的实用技巧。

本文目录一览:

CSS 在 JSP 中不起作用,当放置在文件中时为什么会这样?(css 在 jsp 中不起作用,当放置在文件中时为什么会这样)

CSS 在 JSP 中不起作用,当放置在文件中时为什么会这样?(css 在 jsp 中不起作用,当放置在文件中时为什么会这样)

如何解决CSS 在 JSP 中不起作用,当放置在文件中时为什么会这样?

我已经尝试使用 <style> 并且一切正常,但是当我链接到文件中的 CSS 时 - 它根本不起作用。 如果将鼠标悬停在 Intellij Idea 中的路径上 - 它可以看到该文件。 这是我的 JSP

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <link href="${pageContext.request.contextpath}/WEB-INF/css/style.css" rel="stylesheet" >
  7. <title>Meals List</title>
  8. </head>
  9. <body>
  10. <table class="styled-table">
  11. <caption>Meals with Date,Description and Calories</caption>
  12. <thead>
  13. <tr>
  14. <th>Date</th>
  15. <th>Description</th>
  16. <th>Calories</th>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. <c:forEach var="meal" items="${requestScope.meals}">
  21. <jsp:useBean id="meal" scope="page" type="ru.javawebinar.topjava.model.MealTo"/>
  22. <tr class="${meal.excess ? ''exceeded'' : ''notExceeded''}">
  23. <td><%=ru.javawebinar.topjava.util.TimeUtil.formatLocalDateTime(meal.getDateTime(),"dd-MM-yyyy hh:mm")%></td>
  24. <td> ${meal.description}</td>
  25. <td> ${meal.calories}</td>
  26. </tr>
  27. </c:forEach>
  28. </tbody>
  29. </table>
  30. </body>
  31. </html>

这是我的项目结构:

解决方法

我建议你先把它移到“WEB-INF”文件夹之外。下一步是简单的调用

  1. <link rel="stylesheet" type="text/css" href="css/style.css"/>

如果它必须在“WEB-INF”中,只需将目录添加为:

  1. <link rel="stylesheet" type="text/css" href="WEB-INF/css/style.css"/>

<jsp:useBean>、<jsp:setProperty > 与 < jsp:getProperty>

与 < jsp:getProperty>

<jsp:useBean> 标签

  会调用 java 对象的无参构造方法,来创建实例。

   <jsp:useBean> 标签是用来搭配 JavaBean 元件的标准标签,这里指的 JavaBean 是满足以下条件的 Java 对象:
     1、必须实现 java.io.Serializable 接口
     2、具有无参数的构造器
     3、没有公开(public)的类变量
     4、具有公开的设值方法(Setter)与取值方法(Getter)
   但是在实际的测试中没有实现序列化接口也没有问题。

Demo:

package com.test;

public class AddServiceImpl {
    public String add() {
        return "1 + 2 = 5";
    }
}
Java Code
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<jsp:useBean id="addService" class="com.test.AddServiceImpl"/>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
<p><%= addService.add()%></p>
</body>
</html>
index.jsp

测试地址:http://127.0.0.1/index.jsp

运行结果:1 + 2 = 5

查看转译后的 servlet 源码有如下内容:

com.test.AddServiceImpl addService = null;
      addService = (com.test.AddServiceImpl) _jspx_page_context.getAttribute("addService", javax.servlet.jsp.PageContext.PAGE_SCOPE);
      if (addService == null){
        addService = new com.test.AddServiceImpl();
        _jspx_page_context.setAttribute("addService", addService, javax.servlet.jsp.PageContext.PAGE_SCOPE);
      }
 
      out.print( addService.add());
index_jsp.java

源码分析

  使用 <jsp:useBean id="addService"/> 声明一个 java 对象后,servlet 会去 pageContext 域里根据指定的 id 值去寻找这个 java 对象,如果找不到,使用无参的构造方法创建并且再把它设置到 pageContext 作用域里。
  接着就可以使用设定的 id 值或者说 pageContext 域的 key——addService 来直接使用这个对象。

  使用 <jsp:useBean> 时,还可以指定 scope 属性,可以指定的值有 page(默认)、request、session 与 application。这样就先会到指定属性范围中寻找该实例,如果找到就直接使用;找不到也不会到其它作用域里去找,而是创建一个新对象并放入到指定的指定的作用域里。

  使用 <jsp:useBean> 时,还可以指定 type 属性。type 属性的设置可以是一个抽象类,也可以是一个接口。如果只设置 type 而没有设置 class 属性,则必须确定在某个属性范围中已经存在所要的对象,否则会发生 InstantiationException 异常。比如:

<jsp:useBean id="user" type="com.test.UserBase" class="com.test.User" scope="session"/>
View Code

这样产生的 Servlet 中,將會有以下的片段:

com.test.UserBase user = null;
      synchronized (session) {
        user = (com.test.UserBase) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);
        if (user == null){
          user = new com.test.User();
          _jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);
        }
    }
View Code

 <jsp:setProperty> 标签

  会调用 java 对象 public 的 setter 方法。

  1、获取客户端参数

Demo

package com.test;

public class User {

    private String name;

    private String age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}
Java Code
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<jsp:useBean id="user" class="com.test.User"/>
<jsp:setProperty name="user"  param="name" property="name"></jsp:setProperty>
<jsp:setProperty name="user"  param="age" property="age"></jsp:setProperty>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
<p>
    姓名:<jsp:getProperty name="user" property="name"/><br>
    年龄:<jsp:getProperty name="user" property="age"/>
</p>
</body>
</html>
index.jsp

测试地址:http://127.0.0.1/index.jsp?name=zs&age=18

响应结果:

姓名:zs
年龄:18

如果是获取客户端参数,有三种写法:

写法一:
  <jsp:setProperty name="user" param="name" property="name"></jsp:setProperty>
  <jsp:setProperty name="user" param="age" property="age"></jsp:setProperty>

写法二:
  <jsp:setProperty name="user" property="name"></jsp:setProperty>
  <jsp:setProperty name="user" property="age"></jsp:setProperty>
  如果不指定请求参数名称,JSP 的自省机制会判断是否有相同名称的请求参数,有的话就找出并调用对应的 setter 方法。

写法三:
  <jsp:setProperty name="user" property="*"></jsp:setProperty>
  在 property 属性设置为 “*” 时,表示将自动寻找请求参数,如果请求参数名称为 xxx,就将请求参数值使用 setXxx () 方法。

  自省机制可以自动转换请求参数字符串为对应属性的基本类型。

  2、直接赋值

  比如:<jsp:setProperty name="user" property="password" value="123456"/>

  3、<jsp:setProperty> 的 name 属性说明

  在产生的 Servlet 代码中,会使用 PageContext 的 findAttribute (),依次从 page、request、session、application 中查找看看有无 name 指定的属性名称,找到的话,再通过反射机制找出 JavaBean 上的 setXxx () 方法并执行。


<jsp:getProperty> 标签

  <jsp:getProperty> 基本上就只有一种用法:<jsp:getProperty name="user" property="name"/>。
  这会通过 PageContext 的 findAttribute () 从 page、request、session、application 中依序查找 user 属性,并通过 getName () 方法取得值。


两种不两只的写法

一、在使用 <jsp:useBean> 时可以一并设置属性值

<jsp:useBean id="user" class="com.test.User" scope="session">
    <jsp:setProperty name="user" property="*" />
</jsp:useBean>
View Code

这样转译后产生以下代码:  

synchronized (session) {
        user = (com.test.User) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);
        if (user == null){
          user = new com.test.User();
          _jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);
          org.apache.jasper.runtime.JspRuntimeLibrary.introspect(_jspx_page_context.findAttribute("user"), request);
        }
    }

二、分别编写

<jsp:useBean id="user" class="com.test.User" scope="session"/>
<jsp:setProperty name="user" property="*" />
View Code

这样转译后产生以下代码:

synchronized (session) {
        user = (com.test.User) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);
        if (user == null){
          user = new com.test.User();
          _jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);
        }
      }
    org.apache.jasper.runtime.JspRuntimeLibrary.introspect(_jspx_page_context.findAttribute("user"), request);

如果使用后一种写法,则无论找到还是新建 JavaBean 对象,都一定会使用内省机制来设值。

div+css 之 CSS 文本设置 CSS 字体设置 CSS 列表设置 CSS 表格设置 css outline 轮廓

div+css 之 CSS 文本设置 CSS 字体设置 CSS 列表设置 CSS 表格设置 css outline 轮廓

1、CSS 文本设置:
CSS 文本属性
属性 描述
color 设置文本颜色
direction 设置文本方向。
line-height 设置行高。
letter-spacing 设置字符间距。
text-align 对齐元素中的文本。
text-decoration 向文本添加修饰。
text-indent 缩进元素中文本的首行。
text-shadow 设置文本阴影。CSS2 包含该属性,但是 CSS2.1 没有保留该属性。
text-transform 控制元素中的字母。
unicode-bidi 设置文本方向。
white-space 设置元素中空白的处理方式。
word-spacing 设置字间距。

2、CSS 字体设置:
CSS 字体属性
属性 描述
font 简写属性。作用是把所有针对字体的属性设置在一个声明中。
font-family 设置字体系列。
font-size 设置字体的尺寸。
font-size-adjust 当首选字体不可用时,对替换字体进行智能缩放。(CSS2.1 已删除该属性。)
font-stretch 对字体进行水平拉伸。(CSS2.1 已删除该属性。)
font-style 设置字体风格。
font-variant 以小型大写字体或者正常字体显示文本。
font-weight 设置字体的粗细。

3、CSS 列表设置:
CSS 列表属性 (list)
属性 描述
list-style 简写属性。用于把所有用于列表的属性设置于一个声明中。
list-style-image 将图象设置为列表项标志。
list-style-position 设置列表中列表项标志的位置。
list-style-type 设置列表项标志的类型。
marker-offset

列表项图像
有时,常规的标志是不够的。你可能想对各标志使用一个图像,这可以利用 list-style-image 属性做到:
ul li {list-style-image : url(xxx.gif)}
只需要简单地使用一个 url () 值,就可以使用图像作为标志。

4、CSS 表格设置:

表格边框: border 属性。
下面的例子为 table、th 以及 td 设置了蓝色边框:
table, th, td{border: 1px solid blue;}
折叠边框:border-collapse 属性设置将表格边框折叠为单一边框:
table{border-collapse:collapse;}
表格宽度和高度:通过 width 和 height 属性定义表格的宽度和高度。
table{width:100%;}
th{height:50px;}
表格文本对齐:text-align 属性设置水平对齐方式,比如左对齐、右对齐或者居中:
td{text-align:right;}
vertical-align 属性设置垂直对齐方式,比如顶部对齐、底部对齐或居中对齐:
td{height:50px;vertical-align:bottom;}
表格内边距:控制表格中内容与边框的距离,请为 td 和 th 元素设置 padding 属性:
td{padding:15px;}
表格颜色:
下面的例子设置边框的颜色,以及 th 元素的文本和背景颜色:
table, td, th{border:1px solid green;}
th{background-color:green;color:white;}

5、css outline 轮廓线设置:

ooutline:在一个声明中设置所有的轮廓的属性。

outline-color:设置轮廓的颜色。

outline-style:设置轮廓的样式。包括以下选项:
none:默认。定义无轮廓。
dotted:定义点状的轮廓。
dashed:定义虚线轮廓。
solid:定义实线轮廓。
double:定义双线轮廓。双线的宽度等于 outline-width 的值。
groove:定义 3D 凹槽轮廓。此效果取决于 outline-color 的值。
ridge:定义 3D 凹槽轮廓。此效果取决于 outline-color 的值。
inset:定义 3D 凹槽轮廓。此效果取决于 outline-color 的值。
outset:定义 3D 凹槽轮廓。此效果取决于 outline-color 的值。
inherit:规定应该从父元素继承轮廓样式的设置。
outline-width:设置轮廓的宽度。

thin:规定细轮廓。
medium:默认。规定中等的轮廓。
thick:规定粗轮廓。
length:数值。规定轮廓粗细的值。
inherit:规定应该从父元素继承轮廓样式的设置。

EclipseIndigo上的编译错误:javax.servlet.jsp.JspException,javax.servlet.jsp.PageContext无法解析为一种类型

EclipseIndigo上的编译错误:javax.servlet.jsp.JspException,javax.servlet.jsp.PageContext无法解析为一种类型

我在Eclipse Indigo中的jsp中添加以下EL时遇到了以下错误。

<form action="${pageContext.request.contextPath}/user">...</form>

但是,该应用程序运行良好,没有任何编译错误。我再次检查Eclipse IDE中类路径中的servlet-api 2.5和jst 1.2 jar。

如果删除${pageContext.request.contextPath},则不会显示任何错误。

谁能帮助我摆脱这一错误?

答案1

小编典典

有人建议添加以下依赖关系,它对我有用。

<dependency>    <groupId>javax.servlet</groupId>    <artifactId>jsp-api</artifactId>    <version>2.0</version></dependency>

GET /WEB-INF/jsp/login.jsp 没有映射

GET /WEB-INF/jsp/login.jsp 没有映射

如何解决GET /WEB-INF/jsp/login.jsp 没有映射

请以 studentsbooks

在 GITHUB 上找到这个项目

即使按照正确的教程,我也收到如下错误。请指导我哪里出错了。随意克隆项目。刚刚承诺。

  1. 2021-04-23 20:45:38.227 INFO 16580 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] :
  2. Initializing Spring dispatcherServlet ''dispatcherServlet''
  3. 2021-04-23 20:45:38.227 INFO 16580 --- [nio-8080-exec-1] o.s.web.servlet.dispatcherServlet : Initializing Servlet ''dispatcherServlet''
  4. 2021-04-23 20:45:38.229 INFO 16580 --- [nio-8080-exec-1] o.s.web.servlet.dispatcherServlet : Completed initialization in 2 ms
  5. 2021-04-23 20:45:38.259 WARN 16580 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound : No mapping for GET /WEB-INF/jsp/login.jsp

解决方法

尝试在您的 @EnableWebMvc 类中添加 ApplicationConfig 并覆盖以下方法

  1. public void configureDefaultServletHandling(
  2. DefaultServletHandlerConfigurer configurer) {
  3. configurer.enable();
  4. }
,

(似乎 GitHub 代码与您的问题不符。)

尝试删除 ApplicationConfig.java

您设置了模板解析器 explicitly,但似乎是错误的。

,

我创建了一个类 InsertInitialData 类,注释为 @Component 并使用 WebApplicationContextautowired 注释。 Thymeleaf 使用上下文进行初始化,请在下面的代码中找到。

  1. @Component
  2. public class InsertInitialData{
  3. WebApplicationContext context;
  4. @Autowired
  5. public void setContext(WebApplicationContext context) {
  6. this.context = context;
  7. }
  8. @Bean //as it is from thymeleaf documentation,just passed the context! else is same!
  9. public SpringResourceTemplateResolver templateResolver(){
  10. // SpringResourceTemplateResolver automatically integrates with Spring''s own
  11. // resource resolution infrastructure,which is highly recommended.
  12. SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
  13. templateResolver.setApplicationContext(this.context);
  14. templateResolver.setPrefix("/WEB-INF/templates/");
  15. templateResolver.setSuffix(".html");
  16. // HTML is the default value,added here for the sake of clarity.
  17. templateResolver.setTemplateMode(TemplateMode.HTML);
  18. // Template cache is true by default. Set to false if you want
  19. // templates to be automatically updated when modified.
  20. templateResolver.setCacheable(true);
  21. return templateResolver;
  22. }
  23. @Bean
  24. public SpringTemplateEngine templateEngine(){
  25. // SpringTemplateEngine automatically applies SpringStandardDialect and
  26. // enables Spring''s own MessageSource message resolution mechanisms.
  27. SpringTemplateEngine templateEngine = new SpringTemplateEngine();
  28. templateEngine.setTemplateResolver(templateResolver());
  29. // Enabling the SpringEL compiler with Spring 4.2.4 or newer can
  30. // speed up execution in most scenarios,but might be incompatible
  31. // with specific cases when expressions in one template are reused
  32. // across different data types,so this flag is "false" by default
  33. // for safer backwards compatibility.
  34. templateEngine.setEnableSpringELCompiler(true);
  35. return templateEngine;
  36. }

查看 repo,克隆并运行,使用 Spring boot run

今天关于CSS 在 JSP 中不起作用,当放置在文件中时为什么会这样?css 在 jsp 中不起作用,当放置在文件中时为什么会这样的分享就到这里,希望大家有所收获,若想了解更多关于 与 < jsp:getProperty>、div+css 之 CSS 文本设置 CSS 字体设置 CSS 列表设置 CSS 表格设置 css outline 轮廓、EclipseIndigo上的编译错误:javax.servlet.jsp.JspException,javax.servlet.jsp.PageContext无法解析为一种类型、GET /WEB-INF/jsp/login.jsp 没有映射等相关知识,可以在本站进行查询。

本文标签: