- 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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有没有一种方法可以使用标准类型构造函数(例如 int、set、dict、list、tuple 等)以用户定义的方式将用户定义类的实例强制转换为其中一种类型?例如 class Example:
我知道这个问题在Stackoverflow中有很多问题,但是即使有很多答案,这些答案也帮不了我什么,也没有找到答案。 在我的WebAPP中,它可以正常工作,但是当我将其转换为API时,它失败了(主题标
这个问题已经有答案了: Why does the ternary operator unexpectedly cast integers? (3 个回答) 已关闭 9 年前。 最近遇到一个Java的陷
我尝试使用 FirebaseApp.configure() 配置 Firebase,但遇到以下崩溃: *** Terminating app due to uncaught exception 'c
我有一个自连接员工实体类,其中包含与其自身相关的 id、name 和 ref 列。我想创建它的新实例并将其保存到数据库。 首先我创建了一个 Employee 类的实例并将其命名为 manager。然后
我有一个用于添加新公寓的表单,在该表单中我有一个下拉列表,用户可以在其中选择负责的人员。 显然,当您从下拉列表中选择并尝试保存公寓时,我的应用程序认为该人已被修改。它给了我下面的错误,指示我应该首先保
从 Visualforce 页面,我需要检索我们组织的 salesforce 实例的 URL,而不是 Visual Force URL。 例如我需要https://cs1.salesforce.com
我遇到了一些可能的问题答案,但这是关于从 Hibernate 3.4.0GA 升级到 Hibernate 4.1.8 的问题。所以这曾经在以前的版本下工作,我已经四处搜索了为什么它在这个新版本中出现了
似乎一遍又一遍地问这个问题,我仍然找不到解决我问题的答案。我在下面有一个域模型。每个新创建或更新的“安全用户”都需要我确保其具有配置文件,如果没有,则创建一个新的配置文件并分配给它。 配置文件的要求相
我很难调试为什么 JPA 不级联我的 @ManyToMany 关系。我发现的所有答案都与缺少级联语句有关。但我确实拥有它们并且仍然得到: Caused by: org.hibernate.Transi
Play 服务 API 表明有一个叫做 Instance ID 的东西 但是,在 Android Studio 中包含以下内容后,我无法导入 InstanceID 类 compile "com.goo
我正在使用 Seam 框架。我有 2 个实体: 请求.java @Entity @Table(name = "SRV_REQUEST") public class Request { private
This question处理构建一个适当的Monad来自单子(monad)的实例,但仅在某些约束下 - 例如Set .诀窍是将其包装成 ContT ,它将约束推迟到包装/展开其值。 现在我想对 Ap
我正在尝试执行此查询: StringBuffer sb = new StringBuffer(); sb.append("select p from PointsEntity p " + "where
我试图了解是否可以更改我的 hibernate 配置并使用单个 MySQL 实例(而不是我当前拥有的多个 MySQL 实例): 我有一个使用 hibernate 的 Java 应用程序,与 2 个模式
我有一个选项卡滑动布局,其中包括四个选项卡,每个选项卡都有自己的布局和 fragment ,在我的主要 Activity 布局中,viewpager 参与更改选项卡。特定 View (选项卡)在应用程
我看到很多帖子声称他们正在运行 MySql 的 RDS 实例,但无法连接到该实例,但我没有运行 RDS。 我使用 EC2 实例来托管我的 WordPress 博客,该博客是使用 Web 平台安装程序安
因为我在我的 ec-2 实例上的 python 虚拟环境中运行应用程序( Airflow ),并且我想在同一个 ec2 实例上的默认 python 环境中运行命令,所以我认为 ssh 到我自己的实例更
这个问题已经有答案了: How to fix the Hibernate "object references an unsaved transient instance - save the tra
例子: run APP1 .. ... run APP1 ... run APP2 如何在 APP2 中对 Vue 说我需要调用 APP1?
我是一名优秀的程序员,十分优秀!