springMVC环境的搭建(一)
概要:
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:
(控制器Controller)- 负责转发请求,对请求进行处理。
(视图View) - 界面设计人员进行图形界面设计。
(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
1.低耦合性
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.高重用性和可适用性
随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3.较低的生命周期成本
MVC使开发和维护用户接口的技术含量降低。
4.快速的部署
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5.可维护性
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6.有利于软件工程化管理
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
一、创建一个web项目springMVC,修改编码方式:utf-8.
二、在web-INF下lib导入所需.jar包。(本次加入包有限只为基本环境使用)
三、环境搭建于测试
3.1在src下建包ckx.spring.mvc.controller
在包下new一个Controller测试类TestController.java代码如下:
package ckx.spring.mvc.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
public class TestController { @RequestMapping("/test001")
public ModelAndView test001(ModelAndView ModelAndView){
ModelAndView.setViewName("test001");
return ModelAndView;
}
}
3.2根据返回的视图名在web-root下new一个test001.jsp,直观期间修改body里面内容:This is test001 page.
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'test001.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
This is test001 page. <br>
</body>
</html>
3.3在web.xml配置核心控制器dispatchservlet:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 初始化DispatcherServlet -->
<servlet>
<!--servlet名称-->
<servlet-name>springmvc</servlet-name>
<!--springmvc核心控制器DispatcherServlet-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
<!--设置启动顺序,启动的时候就加载这个servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--配置拦截形式 "/"拦截所有-->
<url-pattern>/</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
3.3在web-inf下创建springmvc-servlet.xml配置文件。
3.3.1配置解析:
1、因为在MVC中常用到注释因此要有开启注释的驱动:<mvc:annotation-driven></mvc:annotation-driven>
2、配置对controller的扫描:<context:component-scan base-package="ckx\spring\mvc\controller"></context:component-scan>注意路径
3、配置解析类:
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!--开启注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven> <!--扫描controller-->
<context:component-scan base-package="ckx\spring\mvc\controller"></context:component-scan> <!-- 定义viewResolver实例,视图解释类 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 注入viewClass实例 -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<!-- <!-- URL前缀 ,在jsp直接位于web-INF下是直接用“/”即可,若在web-INF下文件夹,还需拼接--> -->
<property name="prefix" value="/" />
<!-- URL后缀 找出我们需要的视图,以.jsp文件 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
3.3.2修改index.jsp欢迎页,使其有跳转功能。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<a href="<%=path %>/test001">跳转test001</a> <br/><br/>
</body>
</html>
3.3.3在tomcat中添加项目springMVC后在浏览器地址栏运行localhost:8080/springMVC:
3.3.4点击超链接跳转到test001.jsp:
3.3.5完成基本配置实现页面跳转。
3.4.1页面带值传递,在test001方法中加入数据模型参数model(model默认作用于request)
注意导入正确的包:import org.springframework.ui.Model;
@RequestMapping("/test001")
public ModelAndView test001(ModelAndView ModelAndView,Model model){
ModelAndView.setViewName("test001");
model.addAttribute("name","凯特.温斯莱特");
return ModelAndView;
}
3.4.2刷新test001.jsp,实现带值跳转:
3.5已返回字符串的形式跳转页面(代码更为简洁,这里使用test001页面,只是改变跳转请求。):
@RequestMapping("/test002")
public String test002(Model model){
model.addAttribute("name", "杨千嬅");
return "test001";
}
在欢迎页加test002跳转请求
<a href="<%=path %>/test002">跳转test002</a> <br/><br/>
重启服务器,点击test002超链接,实现用返回字符串的方法实现带数据跳转:
3.6重定向redirect(注意重定向是要加.jsp后缀名,或者return "redirect:/test002";)
@RequestMapping("/test003")
public String test003(Model model){
model.addAttribute("name", "RedirectTest003");
return "redirect:test002.jsp";
}
new一个 test002.jsp:
<body>
This is test002 page. <br></br>
${name} </body>
index.jsp添加超链接:
<a href="<%=path %>/test002">跳转test002</a> <br/><br/>
重启服务,跳转test003实现重定向(重定向是get请求注意地址栏):
四、参数解析,从页面提取数据到后台:
4.1在controller添加一个登陆的方法login:
@RequestMapping("/login")
public String login(String username , String password){
System.out.println("username:"+username);
System.out.println("password:"+password);
return "index";
}
new一个login.jsp:
<body>
<p align="center">
<form action="<%=path %>/login" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="提交">
</form>
</p>
</body>
重启服务器,运行localhost:8080/login.jsp:
输入用户名、密码提交,查看控制台获取数据成功:
但是这种方法在面对多字段时会使方法参数过于冗余,这时就要引进用类做参数了:
创建一个注册页面:
<body>
<p align="center">
<form action="<%=path %>/register" method="post">
用户名:<input type="text" name="username"><br/>
性别:<input type="text" name="sex"><br/>
年龄:<input type="text" name="age"><br/>
政治面貌:<input type="text" name="zzmm"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="注册">
</form>
</p>
</body>
创建一个实体类用来保存这些字段参数:
package ckx.spring.mvc.entity; public class User {
private String username;
private String sex;
private int age;
private String zzmm;
private String password; public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getZzmm() {
return zzmm;
}
public void setZzmm(String zzmm) {
this.zzmm = zzmm;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }
新增一个请求方法register,以user类作为参数:
@RequestMapping("/register")
public String register(User user){
System.out.println("username:"+user.getUsername());
System.out.println("username:"+user.getAge());
System.out.println("username:"+user.getSex());
System.out.println("username:"+user.getZzmm());
System.out.println("username:"+user.getPassword());
return "index";
}
重启服务器,运行register.jsp页面,并填入数据:
点击提交查看控制台获取数据成功:
springMVC环境的搭建(一)的更多相关文章
- springmvc环境的搭建
最近应公司要求,用了2天时间学了springmvc的搭建,就简单总结一下: springmvc和struts2的比较,因为我是学过struts的,它们都是基于mvc模式而设计的web层框架 它们最大的 ...
- spring入门(五)【springMVC环境搭建】
springMVC作为spring的一个WEB组件,是一个MVC的思想,减少了WEB开发的难度,现介绍springMVC环境的搭建,具体的原理放在后面介绍.用过框架的朋友都知道要在WEB项目中使用一个 ...
- SpringMvc环境搭建(配置文件)
在上面的随笔里已经把搭建springmvc环境的基本需要的包都下下来了,拉下来就是写配置文件了. 下面左图是总的结构,右图是增加包 一.最开始当然是web.xml文件了,这是一个总的宏观配置 < ...
- SpringMVC环境搭建和详解
1.Spring容器和SpringMVC容器是父子容器 1.1 SpringMVC容器可以调用Spring容器中的所有内容 1.2 图示 2.SpringMVC环境搭建 1.导入jar包 2.在web ...
- springmvc环境搭建及实例
一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...
- SpringMVC 环境搭建
SpringMVC 框架环境搭建操作步骤如下: 创建动态 Web 项目 配置 Tomcat 服务器 配置 SpringMVC 前端控制器 <?xml version="1.0" ...
- Springmvc+Spring+Hibernate搭建方法
Springmvc+Spring+Hibernate搭建方法及example 前面两篇文章,分别介绍了Springmvc和Spring的搭建方法,本文再搭建hibernate,并建立SSH最基本的代码 ...
- SSM框架——Spring+SpringMVC+Mybatis的搭建
1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- CentOS7 + mono +Jexus 环境的搭建
CentOS7的安装和配置 1,从http://www.centos.org/下载CentOS7的镜像,并在VMWare中创建该镜像的虚拟机,为方便操作,把虚拟机的网络连接设置为桥接模式:在安装过程中 ...
随机推荐
- 【debug】 Linux中top的使用
在我们日常的开发中,我们经常需要查看每个线程的cpu使用情况.其实,在linux中,top也是我们查看cpu使用状况的一个好帮手 top:先查看每一个进程的使用状况 我们可以发现PID:3800这个经 ...
- 对于Java中权限修饰符的理解
老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...
- filebeat读取超链接日志 symlinks
filebeat读取超链接日志文件,还需要增加配置上额外的参数:symlinks: true 符号链接选项允许Filebeat除常规文件外,可以收集符号链接.收集符号链接时,即使报告了符号链接的路径, ...
- Kubernetes 监控--PromQL
Prometheus 通过指标名称(metrics name)以及对应的一组标签(label)唯一定义一条时间序列.指标名称反映了监控样本的基本标识,而 label 则在这个基本特征上为采集到的数据提 ...
- Elasticsearch Painless script编程
我们之前看见了在Elasticsearch里的ingest node里,我们可以通过以下processor的处理帮我们处理我们的一些数据.它们的功能是非常具体而明确的.那么在Elasticsearch ...
- BinaryBombs(二进制炸弹实验)
实验介绍 使用所学知识拆除Binary Bombs来增强对程序的机器级表示.汇编语言.调试器和逆向工程等理解. Binary Bombs(二进制炸弹)是一个可执行程序,是C语言编译链接成的,包含pha ...
- GC plan_phase二叉树挂接的一个算法
楔子 在看GC垃圾回收plan_phase的时候,发现了一段特殊的代码,仔细研究下得知,获取当前数字bit位里面为1的个数. 通过这个bit位为1的个数(count),来确定挂接当前二叉树子节点的一个 ...
- bootstrapValidator 参数校验框架
bootstrap:能够增加兼容性的强大框架. 因为项目需要数据验证,看bootstrapValidator 还不错,就上手一直,完美兼容,话不多说. 需要引用css: bootstrap.min.c ...
- 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea
前言 在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea.今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea. 关于 Gite ...
- Ubuntu 环境下安装 Docker
系统要求 Docker目前只能运行在64位平台上,并且要求内核版本不低于3.10,实际上内核越新越好,过低的内核版本容易造成功能不稳定. 用户可以通过如下命令检查自己的内核版本详细信息: $ unam ...