spring mobile -- hello world

  • 搭建一个web项目
  • 添加maven管理
  • maven引入相关包
  • 配置web.xml
  • 配置xxx-servlet.xml
  • SpringMobileHelloController.java
  • 添加mobile、tablet 相关页面
  • 测试访问

1,2 这里就不介绍了,从3开始

  • maven导入相关包
<dependencies>
		<!-- spring lib -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.1.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>4.1.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>4.1.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>4.1.6.RELEASE</version>
		</dependency>
		<!-- spring mobile -->
		<dependency>
			<groupId>org.springframework.mobile</groupId>
			<artifactId>spring-mobile-device</artifactId>
			<version>1.1.3.RELEASE</version>
		</dependency>
		<!-- logger lib -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>
	</dependencies>
  • 配置web.xml
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <session-config>   
		<session-timeout>600</session-timeout>   
	</session-config>
    <context-param>
	   <param-name>contextConfigLocation</param-name>
	   <param-value>classpath:/*applicationContext.xml</param-value>
	</context-param>
	
    <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>   
	
	<servlet>
        <servlet-name>xxx</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
        <servlet-name>xxx</servlet-name>
		<url-pattern>*.htm</url-pattern>
	</servlet-mapping>
  • 配置xxx-servlet.xml
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	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.1.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
			http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

	<!-- <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
		<property name="interceptors"> <list> <bean class="com.zadobo.base.system.web.AuthorizeInterceptor"/> 
		</list> </property> </bean> -->
	<mvc:annotation-driven>
		<mvc:argument-resolvers>
			<bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />
			<bean
				class="org.springframework.mobile.device.site.SitePreferenceWebArgumentResolver" />
		</mvc:argument-resolvers>
	</mvc:annotation-driven>

	<context:annotation-config />

	<mvc:interceptors>
		<!-- On pre-handle, resolve the device that originated the web request -->
		<bean
			class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
		<!-- On pre-handle, manage the user's site preference (declare after DeviceResolverHandlerInterceptor) -->
		<bean
			class="org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor" />
	</mvc:interceptors>
	<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
		up static resources in the ${webappRoot}/resources directory -->
	<mvc:resources mapping="/resources/**" location="/resources/" />

	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

	<bean
		class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">
		<constructor-arg>
			<bean id="viewResolver"
				class="org.springframework.web.servlet.view.InternalResourceViewResolver"
				p:prefix="/WEB-INF/" p:suffix=".jsp">
			</bean>
		</constructor-arg>
		<property name="enableFallback" value="true" />
		<property name="mobilePrefix" value="mobile/" />
		<property name="tabletPrefix" value="tablet/" />
	</bean>

	<bean id="exceptionResolver"
		class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.Exception">/util/errorPage</prop>
				<prop key="java.lang.SecurityException">/util/exception/securityException</prop>
			</props>
		</property>
	</bean>
	<context:component-scan base-package="com.test.web" />
</beans>
  • SampleController.java
package com.test.web;

import org.springframework.mobile.device.Device;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/sample")
public class SampleController {
	@RequestMapping(value = "/test.htm")
	public String test(Device device) {
		if (device.isMobile()) {
			System.out.println("Hello mobile user!");
		} else if (device.isTablet()) {
			System.out.println("Hello tablet user!");
		} else {
			System.out.println("Hello desktop user!");
		}
		return "index";
	}
}
  • 页面结构



 

猜你喜欢

转载自349246338.iteye.com/blog/2213292