SpringMVC
学习视频:
学习代码
Github
感谢!!!🙏这位老哥救我狗命
先上结果图:
这里是因为你的依赖包没有下载好,虽然你的pom.xml文件不报错,但是你的target---->WEB-INF里面lib目录下的依赖包不完整。所以大家可以看看你lib目录的依赖包是否完整
CSDN首先的结果
第二位老哥给出了这种情况的解决方法
- 先创建文件夹 directory
- 再添加library文件
真的要哭了 改了两个小时,中午成功了,原因是没有把pom文件搞好
好家伙终于搞定了这个
这个也能显示了,原因是我忘记加#了,
jQuery 语法
jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。
基础语法: $(selector).action()
美元符号定义 jQuery
选择符(selector)"查询"和"查找" HTML 元素
jQuery 的 action() 执行对元素的操作
实例:
$(this).hide() - 隐藏当前元素
$("p").hide() - 隐藏所有
元素
$("p.test").hide() - 隐藏所有 class="test" 的
元素
$("#test").hide() - 隐藏 id="test" 的元素
第一个例子
感觉是先搞定三个xml
- maven pom xml
- springmvc xml
创建 myspringmvc的xml
<!--添加包扫描-->
<context:component-scan base-package="com.bjpowernode.controller"></context:component-scan>
<!--添加视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置前缀-->
<property name="prefix" value="/admin/"></property>
<!--配置后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
创建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">
<!-- 注册mvc框架-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- url-pattern是指定拦截什么样的请求
http://localhost:8080/demo.action
这样的请求才会被拦截 -->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
POM文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>test3-SpringMVC-HopeUse</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--添加springmvc的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--添加servlet的依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>springmvc</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
</project>
设置controller 也就是servlet
在webapp目录下新建admin目录,在admin目录下新建main.jsp页面,删除index.jsp页面,并新建,发送请求给服务器
开发控制器(Servlet),它是一个普通的类.
@Controller //交给Spring去创建对象
public class DemoAction {
/**
* 以前的Servlet的规范
* protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
* action中所有的功能实现都是由方法来完成的
* action方法的规范
* 1)访问权限是public
* 2)方法的返回值任意
* 3)方法名称任意
* 4)方法可以没有参数,如果有可是任意类型
* 5)要使用@RequestMapping注解来声明一个访问的路径(名称)
*
*/
@RequestMapping("/demo")
public String demo(){
System.out.println("服务器被访问到了.......");
return "main"; //可以直接跳到/admin/main.jsp页面上
}
}
五种数据提交和获取方法
2022-09-01-16:34
index.jsp 网页代码:
<%--
Created by IntelliJ IDEA.
User: mcx
Date: 2022/9/1
Time: 09:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello</title>
</head>
<body>
<br><br>
<a href="${pageContext.request.contextPath}/demo.action">访问服务器</a>
<br>
<h2>
方式一单个数据提交
</h2>
<form action="${pageContext.request.contextPath}/one.action" method="POST">
姓名:<input name="myname"><br>
年龄:<input name="age"><br>
<input type="submit" value="提交">
</form>
<br>
<br>
<h2>方式二 对象封装提交</h2>
<form action="${pageContext.request.contextPath}/two.action">
姓名:<input name="myname"><br>
年龄:<input name="age"><br>
<input type="submit" value="提交">
</form>
<br>
<br>
<h2>方式三 动态占位符提交</h2>
<a href="${pageContext.request.contextPath}/three/张三/22.action">第三种方式提交</a>
<br>
<br>
<h2>方式四 参数名称不一致</h2>
<form action="${pageContext.request.contextPath}/four.action">
姓名:<input name="myname"><br>
年龄:<input name="age"><br>
<input type="submit" value="提交">
</form>
<br>
<br>
<h2>方式五 手工提取</h2>
<form action="${pageContext.request.contextPath}/five.action">
姓名:<input name="myname"><br>
年龄:<input name="age"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
action处理的class代码
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
@Controller
public class DateSubmit {
@RequestMapping("/one")
//参数自动捕捉
public String one(String myname,int age){
System.out.println("myname is "+myname);
System.out.println(age);
return "main";
}
@RequestMapping("/two")
public String two(User us){
System.out.println(us);
return "main";
}
@RequestMapping(value = "/three/{myname}/{age}")
public String three(
@PathVariable //路径上的参数进行获取如果名字不一样就是
//@PathVariable("myname")这样,下面可以另外指定
String myname,
@PathVariable
int age){
System.out.println("myname = " + myname);
System.out.println("age = " + age);
return "main";
}
@RequestMapping("/four")
public String four(
@RequestParam("myname")
String uname,
int age){
// 上面是传进来的是myname,但是我后端要用的是uname,/
// 使用RequestParam即可。
System.out.println("uname = " + uname);
System.out.println(age);
return "main";
}
@RequestMapping("/five")
public String five(HttpServletRequest request){
String myname = request.getParameter("myname");
System.out.println("myname = " + myname);
int age = Integer.parseInt(request.getParameter("age"));
System.out.println("age = " + age);
return "main";
}
}
在web.xml配置了过滤器之后不会报中文
GET和POST不会报错了
<!-- web.xml -->
<!-- 配置中文编码过滤器-->
<filter>
<filter-name>encode</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 配置参数
- encoding
- forceRequestEncoding
- forceResponseEncoding-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
<!-- 所有请求都过滤-->
</filter-mapping>
<!-- ️配置中文编码过滤器==========-->
AJAX
Jqeury简单初识
Query 入口函数:
$(document).ready(function(){
// 执行代码
});
或者
$(function(){
// 执行代码
});
JavaScript 入口函数:
window.onload = function () {
// 执行代码
}
jQuery 入口函数与 JavaScript 入口函数的区别:
- jQuery 的入口函数是在 html 所有标签(DOM)都加载之后,就会去执行。
- JavaScript 的 window.onload 事件是等到所有内容,包括外部图片之类的文件加载完后,才会执行。
ajax
什么是 AJAX ?
AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。
ajax代码
<%-- 导入jQuery函数库--%>
<script src="js/jquery-3.6.1.js"></script>
<br><br><br>
<a href="javascript:showStu()">返回学生集合 </a>
<div id="mydiv">等待返回数据</div>
</body>
<script type="text/javascript">
function showStu(){
//使用jqueryAJAX的方法发送请求你
$.ajax({
url:"${pageContext.request.contextPath}/list.action",
dataType:"json",
type:"get",
success:function (list) {
var s="";
$.each(list,
function (i,stu){
s+=stu.name+"---"+stu.age +"<br>";
});
// 上面是传进来的参数,有两个用,隔开了
$("#mydiv").html(s);//显示在页面上
}
});
}
</script>