- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringMVC编程使用Controller接口实现控制器实例代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Controller简介 。
Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分:
1、收集、验证请求参数并绑定到命令对象; 。
2、将命令对象交给业务对象,由业务对象处理并返回模型数据; 。
3、返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名).
DispatcherServlet,主要负责整体的控制流程的调度部分:
1、负责将请求委托给控制器进行处理; 。
2、根据控制器返回的逻辑视图名选择具体的视图进行渲染(并把模型数据传入).
因此MVC中完整的C(包含控制逻辑+功能处理)由(DispatcherServlet+Controller)组成.
因此此处的控制器是WebMVC中部分,也可以称为页面控制器、动作、处理器.
之前用注解的方式实现了控制器,现在换了一种,通过实现了Controller接口的Controller类来实现处理请求的作用.
主要包括:XML配置文件,Java普通类,Javaform类,Controller类,和JSP界面 。
1.首先是XML配置文件,包括了web.xml和springmvc-servlet.xml。代码如下:
1)web.xml 。
1
2
3
4
5
6
7
8
9
10
11
12
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
web-app
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns
=
"http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id
=
"WebApp_ID"
version
=
"3.0"
>
<
servlet
>
<
servlet-name
>springmvc</
servlet-name
>
<
servlet-class
>org.springframework.web.servlet.DispatcherServlet</
servlet-class
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>springmvc</
servlet-name
>
<
url-pattern
>/</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
|
2)springmvc-servlet,默认方式的DispatcherServlet配置.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>
<
bean
name
=
"/product_input.action"
class
=
"controller.InputProductController"
/>
<
bean
name
=
"/product_save.action"
class
=
"controller.SaveProductController"
/>
<
bean
id
=
"viewResolver"
class
=
"org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<
property
name
=
"prefix"
value
=
"/WEB-INF/jsp/"
/>
<
property
name
=
"suffix"
value
=
".jsp"
/>
</
bean
>
</
beans
>
|
2.Controller类,包括两个,一个用于打开首页,一个用于处理用户输入并返回 。
1)InputProductController.java 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package
controller;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.springframework.web.servlet.ModelAndView;
import
org.springframework.web.servlet.mvc.Controller;
public
class
InputProductController
implements
Controller{
private
static
final
Log logger = LogFactory.getLog(InputProductController.
class
);
@Override
public
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws
Exception {
logger.info(
"InputProductController called"
);
return
new
ModelAndView(
"ProductForm"
);
}
}
|
2)SaveProductController.java,保存用户输入的Product信息并返回 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package
controller;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.springframework.web.servlet.ModelAndView;
import
org.springframework.web.servlet.mvc.Controller;
import
domain.Product;
import
form.ProductForm;
public
class
SaveProductController
implements
Controller{
private
static
final
Log logger = LogFactory.getLog(SaveProductController.
class
);
@Override
public
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws
Exception {
logger.info(
"SaveProductController called"
);
ProductForm productForm =
new
ProductForm();
//product action properties
productForm.setName(request.getParameter(
"name"
));
productForm.setDescription(request.getParameter(
"description"
));
productForm.setPrice(request.getParameter(
"price"
));
//create model
Product product =
new
Product();
product.setName(productForm.getName());
product.setDescription(productForm.getDescription());
try
{
product.setPrice(
float
.parsefloat(productForm.getPrice()));
}
catch
(NumberFormatException e) {
}
//insert code to save Product
System.out.println(
"返回视图"
);
return
new
ModelAndView(
"ProductDetails"
,
"product"
,product);
}
}
|
3.JSP界面,包括两个,ProductForm和ProductDetails 。
1)ProductForm.jsp 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=UTF-8"
>
<
title
>Insert title here</
title
>
</
head
>
<
body
>
<
div
id
=
"global"
>
<
form
action
=
"product_save.action"
method
=
"post"
>
<
fieldset
>
<
legend
>Add a product</
legend
>
<
label
for
=
"name"
>Product Name: </
label
>
<
input
type
=
"text"
id
=
"name"
name
=
"name"
value
=
""
tabindex
=
"1"
>
<
label
for
=
"description"
>Description: </
label
>
<
input
type
=
"text"
id
=
"description"
name
=
"description"
tabindex
=
"2"
>
<
label
for
=
"price"
>Price: </
label
>
<
input
type
=
"text"
id
=
"price"
name
=
"price"
tabindex
=
"3"
>
<
div
id
=
"buttons"
>
<
label
for
=
"dummy"
></
label
>
<
input
id
=
"reset"
type
=
"reset"
tabindex
=
"4"
>
<
input
id
=
"submit"
type
=
"submit"
tabindex
=
"5"
value
=
"Add Product"
>
</
div
>
</
fieldset
>
</
form
>
</
div
>
</
body
>
</
html
>
|
2)ProductDetails.jsp 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=UTF-8"
>
<
title
>Insert title here</
title
>
</
head
>
<
body
>
<
div
id
=
"global"
>
<
h4
>The product has been saved.</
h4
>
<
p
>
<
h5
>Details:</
h5
>
Product Name: ${product.name} <
br
/>
Description: ${product.description}<
br
/>
Price: $${product.price}
</
p
>
</
div
>
</
body
>
</
html
>
|
好了,代码部分已经齐全了,启动server之后,输入URL:http://localhost:8080/SpringSimple/product_input.action;就可以看到首页了.
注:配置文件和Controller类返回的视图中文件的位置必须要小心。.
总结 。
以上就是本文关于SpringMVC编程使用Controller接口实现控制器的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出.
原文链接:http://blog.csdn.net/qq_28379809/article/details/76177343 。
最后此篇关于SpringMVC编程使用Controller接口实现控制器实例代码的文章就讲到这里了,如果你想了解更多关于SpringMVC编程使用Controller接口实现控制器实例代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试打印 timeval 类型的值。实际上我可以打印它,但我收到以下警告: 该行有多个标记 格式“%ld”需要“long int”类型,但参数 2 的类型为“struct timeval” 程序
我正在编写自己的 unix 终端,但在执行命令时遇到问题: 首先,我获取用户输入并将其存储到缓冲区中,然后我将单词分开并将它们存储到我的 argv[] 数组中。IE命令是“firefox”以启动存储在
我是 CUDA 的新手。我有一个关于一个简单程序的问题,希望有人能注意到我的错误。 __global__ void ADD(float* A, float* B, float* C) { con
我有一个关于 C 语言 CGI 编程的一般性问题。 我使用嵌入式 Web 服务器来处理 Web 界面。为此,我在服务器中存储了一个 HTML 文件。在此 HTML 文件中包含 JavaScript 和
**摘要:**在代码的世界中,是存在很多艺术般的写法,这可能也是部分程序员追求编程这项事业的内在动力。 本文分享自华为云社区《【云驻共创】用4种代码中的艺术试图唤回你对编程的兴趣》,作者: break
我有一个函数,它的任务是在父对象中创建一个变量。我想要的是让函数在调用它的级别创建变量。 createVariable testFunc() [1] "test" > testFunc2() [1]
以下代码用于将多个连续的空格替换为1个空格。虽然我设法做到了,但我对花括号的使用感到困惑。 这个实际上运行良好: #include #include int main() { int ch, la
我正在尝试将文件写入磁盘,然后自动重新编译。不幸的是,某事似乎不起作用,我收到一条我还不明白的错误消息(我是 C 初学者 :-)。如果我手动编译生成的 hello.c,一切正常吗?! #include
如何将指针值传递给结构数组; 例如,在 txt 上我有这个: John Doe;xxxx@hotmail.com;214425532; 我的代码: typedef struct Person{
我尝试编写一些代码来检索 objectID,结果是 2B-06-01-04-01-82-31-01-03-01-01 . 这个值不正确吗? // Send a SysObjectId SNMP req
您好,提前感谢您的帮助, (请注意评论部分以获得更多见解:即,以下示例中的成本列已添加到此问题中;西蒙提供了一个很好的答案,但成本列本身并未出现在他的数据响应中,尽管他提供的功能与成本列一起使用) 我
我想知道是否有人能够提出一些解决非线性优化问题的软件包的方法,而非线性优化问题可以为优化解决方案提供整数变量?问题是使具有相等约束的函数最小化,该函数受某些上下边界约束的约束。 我已经在R中使用了'n
我是 R 编程的初学者,正在尝试向具有 50 列的矩阵添加一个额外的列。这个新列将是该行中前 10 个值的平均值。 randomMatrix <- generateMatrix(1,5000,100,
我在《K&R II C 编程 ANSI C》一书中读到,“>>”和“0; nwords--) sum += *buf++; sum = (sum >>
当下拉列表的选择发生变化时,我想: 1) 通过 div 在整个网站上显示一些 GUI 阻止覆盖 2)然后处理一些代码 3) 然后隐藏叠加层。 问题是,当我在事件监听器函数中编写此逻辑时,将执行 onC
我正在使用 Clojure 和 RESTEasy 设计 JAX-RS REST 服务器. 据我了解,用 Lisp 系列语言编写的应用程序比用“传统”命令式语言编写的应用程序更多地构建为“特定于领域的语
我目前正在研究一种替代出勤监控系统作为一项举措。目前,我设计的用户表单如下所示: Time Stamp Userform 它的工作原理如下: 员工将选择他/她将使用的时间戳类型:开始时间、超时、第一次
我是一名学生,试图自学编程,从在线资源和像您这样的人那里获得帮助。我在网上找到了一个练习来创建一个小程序来执行此操作: 编写一个程序,读取数字 a 和 b(长整型)并列出 a 和 b 之间有多少个数字
我正在尝试编写一个 shell 程序,给定一个参数,打印程序的名称和参数中的每个奇数词(即,不是偶数词)。但是,我没有得到预期的结果。在跟踪我的程序时,我注意到,尽管奇数词(例如,第 5 个词,5 %
只是想知道是否有任何 Java API 可以让您控制台式机/笔记本电脑外壳上的 LED? 或者,如果不可能,是否有可能? 最佳答案 如果你说的是前面的 LED 指示电源状态和 HDD 繁忙状态,恐怕没
我是一名优秀的程序员,十分优秀!