目录
- 前言
- 一、创建web项目
- 二、步骤
- 1.加入springmvc框架的依赖库
- 2.导入工作路径
- 3.配置web.xml【配置前端控制器】
- 3.创建resources资源文件夹
- 4.编写controller
- 5.重新生成 Artifacts
- 6.运行测试
- 进阶挑战
- 1.有前端界面参与输入 的登陆实现
- 2.将数据封装起来
- over
前言
SpringMVC 是Web层的框架(Spring是业务层的框架,MyBatis是持久层的框架 )
SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,SpringMVC是为了简化我们日常Web开发。
一、创建web项目
二、步骤
1.加入springmvc框架的依赖库
右键web新建package命名为lib
将依赖库解压放进lib
2.导入工作路径
右键工作目录(springmvcDemo),F4
选择刚刚的 lib 文件夹
选择tomcat
然后勾选刚刚添加的两个东西
3.配置web.xml【配置前端控制器】
<!-- 定义Spring MVC的前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!--初始化参数配置 配置xml文件路径-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:springMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 让Spring MVC的前端控制器拦截所有请求 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
放在 WEB-INF 目录下的 web.xml 里
3.创建resources资源文件夹
新建文件夹,命名为 resources
设置文件夹类型,右键该(resources)文件夹,F4
将 springMVC.xml 放进 resources 文件夹中,以下是 springMVC.xml 文件内容
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<!--启动注解识别 -->
<context:annotation-config />
<!--扫描controller包,将controller交给SpringIOC容器进行对象管理 -->
<context:component-scan base-package="com.gec.controller">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!--开启注解驱动 -->
<mvc:annotation-driven />
<!-- 支持文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
<!--开通静态资源的访问 -->
<mvc:default-servlet-handler />
<!-- 视图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
4.编写controller
右键 src 文件夹新建 package ,命名为:com.gec.controller
新建UserController.java文件,以下是UserController.java代码:
package com.gec.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//标志注解,用于标明当前类是控制的代码,交给ioc容器管理的
@Controller
public class UserController {
// http://localhost:8080/springmvcDemo/login?name=admin&password=123456
//定义请求处理的方法【登录请求处理】【方法】
@RequestMapping("/login")
@ResponseBody //意思:直接返回数据,输出到页面中,不跳转页面
public String login(String name, String password) {
//
if (name.equals("admin") && password.equals("123456")) {
return "login success!";
} else {
return "login failed!";
}
}
}
5.重新生成 Artifacts
先删去原本的war
再重新加war
6.运行测试
选取项目名,编译
tomcat运行成功:
复制到浏览器运行:http://localhost:8080/springmvcDemo/login?name=admin&password=123456
因为正确,所以显示
如果我们修改链接为:
http://localhost:8080/springmvcDemo/login?name=admin&password=1234567
则会
因为返回的密码不是原本设定的
进阶挑战
1.有前端界面参与输入 的登陆实现
在web目录新建index.jsp
login.jsp代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/springmvcDemo/login">
用户名:<input type="text" name="name"/><br>
密码:<input type="password" name="password"/><br>
<input type="submit" value="登录"/><br>
</form>
</body>
</html>
UserControllor.java改为:
package com.gec.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//标志注解,用于标明当前类是控制的代码,交给ioc容器管理的
@Controller
public class UserController {
// // http://localhost:8080/springmvcDemo/login?name=admin&password=123456
// //定义请求处理的方法【登录请求处理】【方法】
// @RequestMapping("/login")
// @ResponseBody //意思:直接返回数据,输出到页面中,不跳转页面
// public String login(String name, String password) {
// //
// if (name.equals("admin") && password.equals("123456")) {
// return "login success!";
// } else {
// return "login failed!";
// }
// }
//页面跳转的请求处理方法
@RequestMapping("/login")
public String login(String name, String password) {
//登录成功
if (name.equals("admin") && password.equals("123456")) {
return "redirect:/index.html";// 重定向 不走视图解析器的
} else {//登录失败
return "login";// 走视图解析器的 /login.jsp
}
}
}
编译、执行:(自动跳到首页)
在导航栏输入login.jsp,回车
试一下正确的账号:admin,密码:123456
试一下错误的账号:adm,密码:123456
自动跳回本页面,并在地址栏显示刚刚输入的name和password
2.将数据封装起来
- 在src.com.gec建立package
bean
- 再建立User.java
User.java代码如下:
package com.gec.bean;
//user实体类【标准java类的定义】 com.bean.User
public class User {
private int id;
private String name;
private String password;
private int age;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
public User() {
}
public User(int id, String name, String password, int age) {
this.id = id;
this.name = name;
this.password = password;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
3.将UserController.java代码更改如下:
package com.gec.controller;
import com.gec.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
//标志注解,用于标明当前类是控制的代码,交给ioc容器管理的
@Controller
public class UserController {
/* //页面跳转的请求处理方法
@RequestMapping("/login")
public String login(String name, String password) {
//登录成功
if (name.equals("admin") && password.equals("123456")) {
return "redirect:/index.html";// 重定向 不走视图解析器的
} else {//登录失败
return "login";// 走视图解析器的 /login.jsp
}
}
*/
//页面跳转的请求处理方法
@RequestMapping("/login")
public String login(User user) {
//登录成功
if (user.getName().equals("admin") && user.getPassword().equals("123456")) {
return "redirect:/index.html";// 重定向 不走视图解析器的
} else {//登录失败
return "login";// 走视图解析器的 /login.jsp
}
}
}
注意
User
类要打包,左键单击User
按alt + enter
编译、运行,效果如下:
在地址栏后缀输入 login.jsp 进入登陆界面
输入错误的信息点击登陆,登不进而且输入的信息会在导航栏出现
输入正确的账号
将导航栏显示的name和password改正确也是可以进入到首页
over