${pageContext.request.contextPath }无法解析(Springmvc)

${pageContext.request.contextPath }无法解析

${pageContext.request.contextPath}用于解决使用相对路径时出现的问题 ,是JSP中取得绝对路径的方法,等价于<%=request.getContextPath()%> (${}EL表达式)
作用:取出部署的应用程序名,即获取当前的项目的名称

💡拓展:相对路径里常使用 “. ./” 来表示上一级目录。如果有多个上一级目录,可以使用多个“. ./

解决问题(两个方面):

1.没有导入servlet和jsp的jar依赖包
pom.xml

  <!-- servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

        <!--JSP-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>

2.wep-app 的版本要在2.4以上 才能识别EL
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

🌼jq获取当前文件目录

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
    <script >
        $(function (){

            function get_url(){
                //获取当前网址,如: http://localhost:8083/proj/meun.jsp
                var curWwwPath = window.document.location.href;
                //获取主机地址之后的目录,如: proj/meun.jsp
                var pathName = window.document.location.pathname;
                var pos = curWwwPath.indexOf(pathName);
                //获取主机地址,如: http://localhost:8083
                var localhostPath = curWwwPath.substring(0, pos);
                //获取带"/"的项目名,如:/proj
                var projectName = pathName.substring(0, pathName.substr(1).indexOf('/')+1);
                // return(localhostPath + projectName);
                console.log(localhostPath + projectName);
                return(localhostPath+projectName);
            }
            var url = get_url();
            $("input").val(url)
        })
    </script>
</head>
<body>
  <input type="text" style="width: 50%">
</body>
</html>

效果:
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的课堂签到管理系统的实现,使用SpringMVC框架和JDBC进行数据库操作。 首先,我们需要创建一个数据库,其中包含两个表:学生表和签到表。学生表包括学生的学号、姓名和班级;签到表包括签到记录的id、学生的学号、签到时间和签到状态(已签到或未签到)。 1. 创建数据库: ```sql CREATE DATABASE `class_sign` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE `class_sign`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_no` varchar(20) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, `class` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE `sign` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_no` varchar(20) DEFAULT NULL, `sign_time` datetime DEFAULT NULL, `status` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` 2. 创建Maven项目,并添加SpringMVC和JDBC的依赖: ```xml <dependencies> <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.9</version> </dependency> <!-- JDBC --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies> ``` 3. 配置web.xml文件,指定DispatcherServlet的映射和路径: ```xml <web-app> <display-name>class-sign</display-name> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` 4. 配置SpringMVC的配置文件springmvc-config.xml,包括视图解析器和控制器的配置: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 控制器配置 --> <mvc:annotation-driven/> <context:component-scan base-package="com.example.controller"/> <!-- 数据源配置 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/class_sign?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <!-- JDBC模板配置 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> </beans> ``` 5. 创建学生实体类Student和签到实体类Sign: ```java public class Student { private Integer id; private String stuNo; private String name; private String clazz; // getter和setter方法 } public class Sign { private Integer id; private String stuNo; private Date signTime; private String status; // getter和setter方法 } ``` 6. 创建学生的DAO类StudentDao和签到的DAO类SignDao,并实现相应的方法: ```java @Repository public class StudentDao { @Autowired private JdbcTemplate jdbcTemplate; public List<Student> findAll() { String sql = "SELECT * FROM student"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class)); } public Student findByStuNo(String stuNo) { String sql = "SELECT * FROM student WHERE stu_no = ?"; List<Student> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class), stuNo); return list.size() == 0 ? null : list.get(0); } public int add(Student student) { String sql = "INSERT INTO student(stu_no, name, class) VALUES(?, ?, ?)"; return jdbcTemplate.update(sql, student.getStuNo(), student.getName(), student.getClazz()); } public int delete(Integer id) { String sql = "DELETE FROM student WHERE id = ?"; return jdbcTemplate.update(sql, id); } } @Repository public class SignDao { @Autowired private JdbcTemplate jdbcTemplate; public int add(Sign sign) { String sql = "INSERT INTO sign(stu_no, sign_time, status) VALUES(?, ?, ?)"; return jdbcTemplate.update(sql, sign.getStuNo(), sign.getSignTime(), sign.getStatus()); } public List<Sign> findByStuNo(String stuNo) { String sql = "SELECT * FROM sign WHERE stu_no = ?"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Sign.class), stuNo); } public int delete(Integer id) { String sql = "DELETE FROM sign WHERE id = ?"; return jdbcTemplate.update(sql, id); } } ``` 7. 创建控制器类SignController,实现学生的添加和删除、签到的添加和查询功能: ```java @Controller @RequestMapping("/sign") public class SignController { @Autowired private StudentDao studentDao; @Autowired private SignDao signDao; @RequestMapping("/toAdd") public String toAdd(Model model) { model.addAttribute("student", new Student()); return "add"; } @RequestMapping("/add") public String add(Student student) { studentDao.add(student); return "redirect:/sign/list"; } @RequestMapping("/delete/{id}") public String delete(@PathVariable("id") Integer id) { studentDao.delete(id); return "redirect:/sign/list"; } @RequestMapping("/list") public String list(Model model) { List<Student> students = studentDao.findAll(); model.addAttribute("students", students); return "list"; } @RequestMapping("/toSign") public String toSign(Model model) { model.addAttribute("sign", new Sign()); return "sign"; } @RequestMapping("/sign") public String sign(Sign sign) { String stuNo = sign.getStuNo(); Student student = studentDao.findByStuNo(stuNo); if (student == null) { return "error"; } sign.setSignTime(new Date()); sign.setStatus("已签到"); signDao.add(sign); return "redirect:/sign/signList/" + stuNo; } @RequestMapping("/signList/{stuNo}") public String signList(@PathVariable("stuNo") String stuNo, Model model) { List<Sign> signs = signDao.findByStuNo(stuNo); model.addAttribute("signs", signs); return "signList"; } @RequestMapping("/deleteSign/{id}") public String deleteSign(@PathVariable("id") Integer id) { Sign sign = signDao.findById(id); if (sign == null) { return "error"; } signDao.delete(id); return "redirect:/sign/signList/" + sign.getStuNo(); } } ``` 8. 创建视图文件,包括学生添加页面add.jsp、学生列表页面list.jsp、签到页面sign.jsp和签到列表页面signList.jsp: add.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>添加学生</title> </head> <body> <h1>添加学生</h1> <form action="${pageContext.request.contextPath}/sign/add" method="post"> 学号:<input type="text" name="stuNo"/><br/> 姓名:<input type="text" name="name"/><br/> 班级:<input type="text" name="clazz"/><br/> <input type="submit" value="添加"/> </form> <hr/> <a href="${pageContext.request.contextPath}/sign/list">查看所有学生</a> </body> </html> ``` list.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>学生列表</title> </head> <body> <h1>学生列表</h1> <table border="1"> <tr> <th>ID</th> <th>学号</th> <th>姓名</th> <th>班级</th> <th>操作</th> </tr> <c:forEach items="${students}" var="student"> <tr> <td>${student.id}</td> <td>${student.stuNo}</td> <td>${student.name}</td> <td>${student.clazz}</td> <td> <a href="${pageContext.request.contextPath}/sign/delete/${student.id}">删除</a> </td> </tr> </c:forEach> </table> <hr/> <a href="${pageContext.request.contextPath}/sign/toAdd">添加学生</a> <a href="${pageContext.request.contextPath}/sign/toSign">学生签到</a> </body> </html> ``` sign.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>学生签到</title> </head> <body> <h1>学生签到</h1> <form action="${pageContext.request.contextPath}/sign/sign" method="post"> 学号:<input type="text" name="stuNo"/><br/> <input type="submit" value="签到"/> </form> <hr/> <a href="${pageContext.request.contextPath}/sign/list">查看所有学生</a> <a href="${pageContext.request.contextPath}/sign/toSign">学生签到</a> </body> </html> ``` signList.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>签到列表</title> </head> <body> <h1>签到列表</h1> <table border="1"> <tr> <th>ID</th> <th>学号</th> <th>签到时间</th> <th>签到状态</th> <th>操作</th> </tr> <c:forEach items="${signs}" var="sign"> <tr> <td>${sign.id}</td> <td>${sign.stuNo}</td> <td>${sign.signTime}</td> <td>${sign.status}</td> <td> <a href="${pageContext.request.contextPath}/sign/deleteSign/${sign.id}">删除</a> </td> </tr> </c:forEach> </table> <hr/> <a href="${pageContext.request.contextPath}/sign/list">查看所有学生</a> <a href="${pageContext.request.contextPath}/sign/toSign">学生签到</a> </body> </html> ``` 这样,我们就完成了一个简单的课堂签到管理系统的实现,使用了SpringMVC框架和JDBC进行数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值