if (dispatchUrl != null) {
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了海湖新免费建站欢迎大家使用!
RequestDispatcher rd = request.getRequestDispatcher(dispatchUrl);
rd.forward(request, response);
}
}
}
ControllerServlet的process方法处理所有输入请求。首先是获取请求URI和action。在案例中,action值只会是product_input或product_save。
Process方法中首先使用if代码进行判断。接着process方法执行如下步骤。
创建并根据请求参数构建一个表单对象。save操作涉及3个属件:name、Description和price。然后创建一个领域对象,并通过表单对象设置相应属性。
执行针对领域对象的业务逻辑,包括将其持久化到数据库中。
转发请求到视图(JSP页面)。
针对product_input,无需任何操作。
针对product_save,则创建一个ProductForm对象和Product对象,并将前者的属性值复制到后者。然后,将Product对象放入HttpS ervletRequest对象中,以便对应的视图能访问到。最后,process方法转到视图,如果action是product_input,则转到ProductForm.jsp页面,否则转到ProductDetails.jsp页面。
4.4.4 视图层
ProductForm.jsp
Add a product
Product Name:
tabindex="1">
Description:
name="description" tabindex="2">
Price:
tabindex="3">
value="Add Product">
ProductDetails.jsp
The product has been saved.
Details:
Product Name: ${product.name}
Description: ${product.description}
Price: $${product.price}
CSS郑州妇科咨询网站 http://www.zzkdfk120.com/
#global {
text-align: left;
border: 1px solid #dedede;
background: #efefef;
width: 560px;
padding: 20px;
margin: 100px auto;
}
form {
font:100% verdana;
min-width: 500px;
max-width: 600px;
width: 560px;
}
form fieldset {
border-color: #bdbebf;
border-width: 3px;
margin: 0;
}
legend {
font-size: 1.3em;
}
form label {
width: 250px;
display: block;
float: left;
text-align: right;
padding: 2px;
}
#buttons {
text-align: right;
}
web.xml
YJYSpring_MVC_Servlet_PaulDeckCH02
ControllerServlet
com.springmvc.servlet.ControllerServlet
ControllerServlet
*.action
4.5 运行测试
输入地址:
http://localhost:8080/YJYJ2EESpring_MVC_Servlet_PaulDeckCH02/product_input.action
输入数据之后,点击Add Product,地址栏的地址显示为
http://localhost:8080/YJYJ2EESpring_MVC_Servlet_PaulDeckCH02/product_save.action
测试完毕