Java Web 三大框架开发资料
生活随笔
收集整理的這篇文章主要介紹了
Java Web 三大框架开发资料
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Spring MVC Controller配置方式
Spring MVC 中,配置Controller時使用的是URL對應(yīng)Bean的方式。在SpringMVC中,對于Controller的配置方式有很多種。
第一種 URL對應(yīng)Bean
第二種 為URL分配Bean
第三種 URL匹配Bean
第四種 注解
Spring MVC 入門示例
MVC框架是什么
模型-視圖-控制器(MVC)是一個眾所周知的以設(shè)計界面應(yīng)用程序為基礎(chǔ)的設(shè)計模式。它主要通過分離模型、視圖及控制器在應(yīng)用程序中的角色將業(yè)務(wù)邏輯從界面中解耦。通常,模型負(fù)責(zé)封裝應(yīng)用程序數(shù)據(jù)在視圖層展示。視圖僅僅只是展示這些數(shù)據(jù),不包含任何業(yè)務(wù)邏輯。控制器負(fù)責(zé)接收來自用戶的請求,并調(diào)用后臺服務(wù)(manager或者dao)來處理業(yè)務(wù)邏輯。處理后,后臺業(yè)務(wù)層可能會返回了一些數(shù)據(jù)在視圖層展示。控制器收集這些數(shù)據(jù)及準(zhǔn)備模型在視圖層展示。MVC模式的核心思想是將業(yè)務(wù)邏輯從界面中分離出來,允許它們單獨改變而不會相互影響。
在Spring MVC應(yīng)用程序中,模型通常由POJO對象組成,它在業(yè)務(wù)層中被處理,在持久層中被持久化。視圖通常是用JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSTL)編寫的JSP模板。控制器部分是由dispatcher servlet負(fù)責(zé)。
Dispatcher Servlet(Spring控制器)
在最簡單的Spring MVC應(yīng)用程序中,控制器是唯一的你需要在Java web部署描述文件(即web.xml文件)中配置的Servlet。Spring MVC控制器 ——通常稱作Dispatcher Servlet,實現(xiàn)了前端控制器設(shè)計模式。并且每個web請求必須通過它以便它能夠管理整個請求的生命周期。
當(dāng)一個web請求發(fā)送到Spring MVC應(yīng)用程序,dispatcher servlet首先接收請求。然后它組織那些在Spring web應(yīng)用程序上下文配置的(例如實際請求處理控制器和視圖解析器)或者使用注解配置的組件,所有的這些都需要處理該請求。
在Spring3.0中定義一個控制器類,這個類必須標(biāo)有@Controller注解。當(dāng)有@Controller注解的控制器收到一個請求時,它會尋找一個合適的handler方法去處理這個請求。這就需要控制器通過一個或多個handler映射去把每個請求映射到handler方法。為了這樣做,一個控制器類的方法需要被@RequestMapping注解裝飾,使它們成為handler方法。
handler方法處理完請求后,它把控制權(quán)委托給視圖名與handler方法返回值相同的視圖。為了提供一個靈活的方法,一個handler方法的返回值并不代表一個視圖的實現(xiàn)而是一個邏輯視圖,即沒有任何文件擴(kuò)展名。你可以將這些邏輯視圖映射到正確的實現(xiàn),并將這些實現(xiàn)寫入到上下文文件,這樣你就可以輕松的更改視圖層代碼甚至不用修改請求handler類的代碼。
為一個邏輯名稱匹配正確的文件是視圖解析器的責(zé)任。一旦控制器類已將一個視圖名稱解析到一個視圖實現(xiàn)。它會根據(jù)視圖實現(xiàn)的設(shè)計來渲染對應(yīng)對象。
Spring入門示例
在這個應(yīng)用程序中,將創(chuàng)建最簡單的員工管理應(yīng)用程序的演示,它只有一個功能,即系統(tǒng)提供的所有雇員的列表。pom.xml
以下pom.xml文件中包含spring mvc依賴及為編寫jsp文件提供支持的taglib相關(guān)依賴
......
? ?<dependency>
? ? ? ? ? ? <groupId>org.springframework</groupId>
? ? ? ? ? ? <artifactId>spring-webmvc</artifactId>
? ? ? ? ? ? <version>4.1.4.RELEASE</version>
? ? ? ? </dependency>
......
web.xml
這最精簡的web.xml文件聲明了一個Servlet(即dispatcher servlet)來接收所有類型的請求。Dispatcher servlet在這里充當(dāng)前端控制器的角色。
......
? ? <servlet>
? ? ? ? <servlet-name>spring</servlet-name>
? ? ? ? ? ? <servlet-class>
? ? ? ? ? ? ? ? org.springframework.web.servlet.DispatcherServlet
? ? ? ? ? ? </servlet-class>
? ? ? ? <load-on-startup>1</load-on-startup>
? ? </servlet>
?
? ? <servlet-mapping>
? ? ? ? <servlet-name>spring</servlet-name>
? ? ? ? <url-pattern>/</url-pattern>
? ? </servlet-mapping>
......
spring-servlet.xml(你也可以用applicationContext.xml文件)
在請求handler、業(yè)務(wù)層、dao層,我們使用帶注解的類,所以為“com.howtodoinjava.demo”包里的所有類啟用了注解處理
......?
? ? <servlet>
? ? ? ? <servlet-name>spring</servlet-name>
? ? ? ? ? ? <servlet-class>
? ? ? ? ? ? ? ? org.springframework.web.servlet.DispatcherServlet
? ? ? ? ? ? </servlet-class>
? ? ? ? <load-on-startup>1</load-on-startup>
? ? </servlet>
?
? ? <servlet-mapping>
? ? ? ? <servlet-name>spring</servlet-name>
? ? ? ? <url-pattern>/</url-pattern>
? ? </servlet-mapping>
......
EmployeeController.java
注解@RequestMapping在類級別和方法級別層面確定將被調(diào)用方法的URL。
......?
? ? <context:component-scan base-package="com.howtodoinjava.demo" />
?
? ? <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
? ? <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
?
? ? <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
? ? ? ? <property name="prefix" value="/WEB-INF/views/" />
? ? ? ? <property name="suffix" value=".jsp" />
? ? </bean>
?
</beans>
......
EmployeeVO.java
這個類作為MVC模式的模型。
package com.howtodoinjava.demo.model;
?
import java.io.Serializable;
?
public class EmployeeVO implements Serializable
{
? ? private static final long serialVersionUID = 1L;
?
? ? private Integer id;
? ? private String firstName;
? ? private String lastName;
?
? ? //Setters and Getters
?
? ? @Override
? ? public String toString() {
? ? ? ? return "EmployeeVO [id=" + id + ", firstName=" + firstName
? ? ? ? ? ? ? ? + ", lastName=" + lastName + "]";
? ? }
}
EmployeeDAO.java
這個類位于三層架構(gòu)中的第三層。負(fù)責(zé)與底層的數(shù)據(jù)庫存儲進(jìn)行交互。
import java.util.List;
?
import com.howtodoinjava.demo.model.EmployeeVO;
?
public interface EmployeeDAO
{
? ? public List<EmployeeVO> getAllEmployees();
}
EmployeeDAOImpl.java
import java.util.ArrayList;
import java.util.List;
?
import org.springframework.stereotype.Repository;
?
import com.howtodoinjava.demo.model.EmployeeVO;
?
@Repository
public class EmployeeDAOImpl implements EmployeeDAO {
?
? ? public List<EmployeeVO> getAllEmployees()
? ? {
? ? ? ? List<EmployeeVO> employees = new ArrayList<EmployeeVO>();
?
? ? ? ? EmployeeVO vo1 = new EmployeeVO();
? ? ? ? vo1.setId(1);
? ? ? ? vo1.setFirstName("Lokesh");
? ? ? ? vo1.setLastName("Gupta");
? ? ? ? employees.add(vo1);
?
? ? ? ? EmployeeVO vo2 = new EmployeeVO();
? ? ? ? vo2.setId(2);
? ? ? ? vo2.setFirstName("Raj");
? ? ? ? vo2.setLastName("Kishore");
? ? ? ? employees.add(vo2);
?
? ? ? ? return employees;
? ? }
}
EmployeeManager.java
這個類處于三層架構(gòu)中的第二層。負(fù)責(zé)與DAO層交互。
import java.util.List;
?
import com.howtodoinjava.demo.model.EmployeeVO;
?
public interface EmployeeManager
{
? ? public List<EmployeeVO> getAllEmployees();
}
EmployeeManagerImpl.java
import java.util.List;
?
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
?
import com.howtodoinjava.demo.dao.EmployeeDAO;
import com.howtodoinjava.demo.model.EmployeeVO;
?
@Service
public class EmployeeManagerImpl implements EmployeeManager {
?
? ? @Autowired
? ? EmployeeDAO dao;
?
? ? public List<EmployeeVO> getAllEmployees()
? ? {
? ? ? ? return dao.getAllEmployees();
? ? }
}
employeesListDisplay.jsp
這個jsp被用于顯示系統(tǒng)中的所有員工。它循環(huán)遍歷employee集合,并且在一個表中打印他們的詳細(xì)信息。這符合MVC模式的視圖層。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
?
<html>
<head>
? ? <title>Spring MVC Hello World</title>
</head>
?
<body>
? ? <h2>All Employees in System</h2>
?
? ? <table border="1">
? ? ? ? <tr>
? ? ? ? ? ? <th>Employee Id</th>
? ? ? ? ? ? <th>First Name</th>
? ? ? ? ? ? <th>Last Name</th>
? ? ? ? </tr>
? ? ? ? <c:forEach items="${employees}" var="employee">
? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? <td>${employee.id}</td>
? ? ? ? ? ? ? ? <td>${employee.firstName}</td>
? ? ? ? ? ? ? ? <td>${employee.lastName}</td>
? ? ? ? ? ? </tr>
? ? ? ? </c:forEach>
? ? </table>
?
</body>
</html>
現(xiàn)在在您的應(yīng)用程序服務(wù)器部署應(yīng)用程序。并點擊“http://localhost:8080/springmvcexample/employee-module/getAllEmployees”。如果你已正確配置所有內(nèi)容,你將會在屏幕下看到......
總結(jié)
以上是生活随笔為你收集整理的Java Web 三大框架开发资料的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 内核开发资料
- 下一篇: Struts2中的action类