1.门户系统搭建
门户就是访问网站的入口,通俗的说在就是网站首页。比如:jd首页,taotao首页,taobao首页。
从淘淘商城的系统架构图来看接下来要完成商城门户与内容服务这一块的。
2.搭建taotao-portal-web工程
创建完成效果图:
2.1创建Maven工程
2.2修改pom.xml 文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-portal-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- JSP相关 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<!-- 排除依赖 -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
</dependencies>
<!-- 配置tomcat插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8082</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.3配置web.xml
配置的拦截器拦截的请求是以.html
结尾的,我们可以称之为”伪静态”,之所以称为伪静态是因为我们可以把各种动态请求都写成以.html
结尾,实质上响应的依然是动态数据。是因为SEO(搜索引擎优化)喜欢收录以.html
结尾的请求,从而有利于搜索排名。
<?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_2_5.xsd"
version="2.5">
<display-name>taotao-portal-web</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- 解决post乱码 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- springmvc的前端控制器 -->
<servlet>
<servlet-name>taotao-portal-web</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- URL 拦截形式 -->
<servlet-mapping>
<servlet-name>taotao-portal-web</servlet-name>
<!-- 伪静态化:SEO 搜索引擎优化-->
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
2.4配置springmvc.xml
在src/main/resources目录下新建一个resource目录,并在resource目录下新建一个resource.properties配置文件,这个文件暂时保留为空,以后需要配置的时候可以在这个配置文件添加配置。
在src/main/java目录下新建一个com.taotao.portal.controller包
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<!-- 加载属性文件 -->
<context:property-placeholder location="classpath:resource/resource.properties" />
<!-- controller包扫描 -->
<context:component-scan base-package="com.taotao.portal.controller" />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 引用dubbo服务 -->
<dubbo:application name="taotao-portal-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.5.103:2181"/>
<!-- <dubbo:reference interface="com.taotao.service.TestService" id="testService" timeout="300000" /> -->
</beans>
3.商城首页展示
其中css、images、js直接放到webapp目录下,这点与taotao-manager-web工程不一样,原因是taotao-manager-web工程配置的拦截器拦截的是以/
结尾的请求,这样的话,我们可以通过配置资源映射来访问WEB-INF目录下的静态资源,但是现在由于拦截器拦截的请求是以*.html
结尾的,springmvc根本就不会去拦截静态资源,这样即使配置资源映射也不管用。因此放到WEB-INF目录下的话,将无法访问到这些静态资源,因此需要直接放到webapp目录下才行。
在taotao-portal-web编写IndexController
package com.taotao.portal.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
/**
* 展示首页
*/
@RequestMapping("/index")
public String ShowIndex() {
return "index";
}
}
web.xml文件中的<welcome-file-list>
配置的是默认的访问页,也就是请求过来后会默认访问index.jsp,由于这个页面并不存在,DispatcherServlet会处理该请求。然后访问默认的访问页index.html,会被<url-pattern>*.html</url-pattern>拦截,然后匹配/index,接着便执行showIndex方法,返回”index”,由于springmvc.xml文件中配置了视图解析器,会自动在”index”的前后面加上"/WEB-INF/jsp/"和".jsp",这样请求便成了访问/WEB-INF/jsp/index.jsp,/WEB-INF/jsp/是我们的商城首页,因此便可以访问到商城首页了。
直接运行taotao-portal-web项目,访问http://localhost:8082/即可看到商城首页