`
cxshun
  • 浏览: 724172 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring页面技术讨论

 
阅读更多

这段时间做的一个新项目用到了久未接触的spring,也趁着这段时间重新学习了一下。

其实也不能算重新学习,因为spring mvc以前接触的很少。

看过好多童鞋拿spring的MVC和struts来对比,其实我觉得大可不必,喜欢哪个用哪个罗,或者公司规定哪个就用哪个。一种技术的流行总有它的优点的。

这种见仁见智的东西就不多说了。

直接来看看例子。

今天我们来讲的是spring mvc跟其他页面显示技术的结合,如jsp,freemarker,velocity。我只用过这三个,其他没用过的不好说,等各位朋友们自己研究啦。下面进正题。

1)我们要用spring mvc,首先还是需要进行相关的配置,在web.xml中进行中心控制器的配置,(中文控制器是在struts中的说法,但spring中没有一个明确的说明指明DispatcherServlet是叫什么,暂且这样来叫)。见代码:

<servlet>
  		<servlet-name>dispatcherServlet</servlet-name>
  		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  		<init-param>
  			<param-name>contextConfigLocation</param-name>
  			<param-value>WEB-INF/applicationContext.xml</param-value>
  		</init-param>
  		<load-on-startup>1</load-on-startup>
 	 </servlet>
  	<servlet-mapping>
  		<servlet-name>dispatcherServlet</servlet-name>
  		<url-pattern>/</url-pattern>
  	</servlet-mapping>
 

  这里一般应该都没问题的。特别要注意的一点就是spring的url-pattern这里不同于其他的框架,其他都是用/*,而这里url-pattern是用/,因为我们不想让它匹配.jsp,.html,.htm结尾的文件。

2)配置了控制器,当有相应的链接时,比如我们有一个

http://localhost:8080/Spring_MVC/login

请求,它首先会被DispatcherServlet进行拦截,然后再在spring的配置文件中进行查找对应的Controller。

我们看到上面,有一个contextConfigLocation属性,这个值指明了spring的配置文件的位置。

applicationContext.xml中我们需要配置viewResolver,handlerMapping,实际上handlerMapping可以不用配置,因为spring默认会使用beanNameUrlHandlerMapping这个来进行请求的查询。但我在例子中是用了simpleUrlHandlerMapping

看代码:

	<bean name="login" 
		class="org.spring.mvc.UserLogin" />
	
	<bean id="simpleUrlHandlerMapping" 
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
		<!-- 每一个view逻辑名对应一个bean -->
		<property name="mappings">
			<props>
				<prop key="/login">login</prop>
			</props>
		</property>
	</bean>
	
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 前缀名 -->
		<property name="prefix"><value></value></property>
		<!-- 指定后缀名 -->
		<property name="suffix">
			<value>.jsp</value>
		</property>
	</bean>

  这里的实际很简单,我都作了相应的注释,下面我们来看UserLogin这个Controller.

public class UserLogin implements Controller{
	public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		ModelAndView mav = new ModelAndView();
		//设置视图逻辑名
		mav.setViewName("message");
		mav.addObject("message","跳转过来啦");
		return mav;
	}
}

  很简单的类,我们没有做什么参数的接收。Controller必须要实现Controller接口或者继续Controller的实现类,这个我们先不讲。

例子中很简单的设了一个参数,message,它的值为“跳转过来啦”,而我们有一个页面message.jsp

只有一句代码:

${message }

  其他是HTML的基本框架代码。这里我们取出在上一个Controller中设入的message值。

我们是从login.jsp中进行跳转过来的,它的代码如下:

<a href="<%=request.getContextPath() %>/login" >调用UserLogin这个Controller</a>

  其他是HTML的基本代码,所以不贴出来了。

 

当我们从UserLogin中返回ModelAndView时,上面的ViewResolver就发挥它的作用了,它在项目的根目录下(因为我们没有设置prefix),寻找与viewName名称相同的jsp文件(因为我们设置了suffix为.jsp)。于是就找到了我们在根目录下的message.jsp。我们看效果:

当我们点击上面的链接后,我们调用loginController,效果为:

跳转很正常。证明我们对JSP的处理是没问题的。

 

3)上面我们是进行处理JSP的,下面我们来看一下spring对Freemarker的支持。

这里我们需要修改上面的applicationContext.xml,修改ViewResolver,并且需要添加一个FreeMarkerConfigurer来配置freemarker的模板位置和其他信息。我们直接见代码:

首先我们需要去掉上面的viewResolver,另外添加的如下:

	<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath">
			<value>/WEB-INF/freemarker/</value>
		</property>	
		<!-- freemarker的默认编码,解决乱码用 -->
		<property name="defaultEncoding">
			<value>UTF-8</value>
		</property>
	</bean>
	
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		<property name="suffix">
			<value>.ftl</value>
		</property>	
		<!-- 配置页面的contentType -->
		<property name="contentType">
			<value>text/html;charset=UTF-8</value>
		</property>
	</bean>

    这里是配置的,都没啥好说的。下面是UserLogin的修改:

public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		ModelAndView mav = new ModelAndView();
		mav.setViewName("listReaders");
		Reader reader = new Reader();
		reader.setName("shun");
		reader.setPassword("123456");
		
		Reader reader2 = new Reader();
		reader2.setName("shun2");
		reader2.setPassword("123456(2)");
		
		List<Reader> readers = new ArrayList<Reader>();
		readers.add(reader2);
		readers.add(reader);
		mav.addObject("readers",readers);
		return mav;
	}

  这里我们设了一个list,把两个reader设到list里面,方便我们进行演示。reader很简单的,就两个属性和相应的get/set方法,大家自己写一下就OK了,这里不帖出那部分代码了。

在上面的freemarker的viewResolver会在/WEB-INF/freemarker(前缀)文件夹下,查找listReaders.vm(vm是后缀)。

我们的listReaders.vm可以新建html文件进行修改,内容如下:

<#list readers as reader>
	姓名:${reader.name}
	密码:${reader.password}<br/>
</#list>

  这里进行循环,关于freemarker的语法大家可以在网上找些资料看看。

我们来看看效果,login.jsp不变,我们点击后跳转到listReaders.vm:

这里我们没有乱码是因为我们设置了defaultEncoding和contentType,所以显示正常,大家可以试试把其中一个去掉,那么就会出现乱码了。

 

4)上面我们看了freemarker和JSP的显示,下面我们来看看velocity,这里我们只修改applicationContext.xml,修改viewResolver和configurer,首先我们把上面添加的freemarker的viewResolver和freemarkerConfigurer,另外添加如下:

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
		<property name="suffix">
			<value>.vm</value>
		</property>
		<property name="contentType">
			<value>text/html;charset=UTF-8</value>
		</property>
	</bean>
	<bean id="velocityConfigurer"
		class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
		<property name="resourceLoaderPath">
			<value>/WEB-INF/velocity/</value>
		</property>	
		<property name="velocityProperties">
			<props>
				<prop key="input.encoding">UTF-8</prop>
				<prop key="output.encoding">UTF-8</prop>
			</props>
		</property>
	</bean>

   上面的我们添加了velocity的相关viewResolver和configurer。其中的contentType和velocityProperties是为了中文乱码而设的。

我们看看listReader.vm,它也可以如上新建一个html进行修改。

#foreach($reader in $readers)
	姓名:${reader.name}
	密码:${reader.password}<br/>
#end

  它的效果和上面的freemarker一样。

 

注意,为了避免不必要的乱码,建议所有文件都统一编码,如果非UTF-8则需要相应上面例子中的相应编码。

 

5)spring来提供了其他对pdf和xml等的相关支持,这些由于暂时没用到,没多研究。

暂时就先跟大家分享这些。

  

  • 大小: 2 KB
  • 大小: 3.3 KB
  • 大小: 1.9 KB
0
1
分享到:
评论

相关推荐

    Spring Boot技术栈博客企业前后端.txt

    根据提供的文件信息,我们可以推断出这篇文档主要讨论的是与Spring Boot技术栈相关的博客内容,尤其是聚焦于企业级应用中的前后端开发。接下来,我们将基于这些有限的信息来展开相关知识点的详细阐述。 ### Spring ...

    spring mvc+spring+hibernate+bootstrap开发失物招领项目包括前台页面和后台管理系统

    6. **技术讨论**:项目开发者表示对于任何技术问题都愿意进行交流讨论,这表明该项目不仅是一个学习资源,也是一个互动平台,有助于提升开发者的技术水平和解决问题的能力。 该项目的实践性强,适合Java Web开发者...

    基于spring boot技术的签到管理系统的设计与实现.pdf

    《基于Spring Boot技术的签到管理系统的设计与实现》是一篇探讨如何利用现代Web技术构建高效、便捷的签到管理系统的本科论文。该系统基于Spring Boot框架,结合Vue.js前端框架,以及ECharts数据可视化库和JQuery技术...

    spring boot mybatis jsp

    标题 "spring boot mybatis jsp" 暗示了我们讨论的是一个使用Spring Boot、MyBatis和JSP技术构建的Web应用项目。这三种技术是Java开发领域中常见的组件,用于快速搭建后端服务和交互式的前端界面。让我们详细探讨...

    spring3.0 MVC中文教程

    5. **第5部分:Spring 3 MVC的国际化与本地化教程** - 讨论如何使用Spring MVC提供的国际化支持来构建多语言应用程序。 6. **第6部分:Spring 3 MVC主题皮肤使用示例教程** - 展示如何使用Spring MVC提供的主题支持...

    spring和axis 整合

    在IT行业中,Spring框架和Apache Axis2是两个重要的技术组件,它们分别用于处理Java应用程序的依赖管理和Web服务的实现与部署。Spring是一个全面的后端开发框架,它提供了丰富的功能,如依赖注入、面向切面编程(AOP...

    hibernate + spring mvc + spring + maven整合开发 Java 开源博客系统

    在Java开发领域,SSH(Spring...此外,对于用户问题的解答和讨论,开发者应具备良好的沟通能力,以促进技术的交流和问题的解决。通过参与这样的项目,开发者不仅可以提升自己的技术技能,也能积累宝贵的团队协作经验。

    海康摄像头spring boot

    在"海康摄像头支持spring bo"这个标签中,我们可以理解为这是关于海康摄像头与Spring Boot集成的讨论,可能涉及到的技术点包括摄像头API的使用、Spring Boot的安全机制、Web页面的实时性以及整个系统的可扩展性和...

    JAVA SPRING(HTML画面,非JSP画面)

    在本例中,"JAVA SPRING(HTML画面,非JSP画面)"表明我们将讨论如何在Spring框架下使用HTML而不是传统的JSP(JavaServer Pages)来创建用户界面。 1. **Spring MVC**:Spring MVC是Spring框架的一部分,专门用于处理...

    项目搭建实例、spring + mybatis + spring mvc + maven + mysql

    在本项目中,我们主要探讨的是一个基于Java的Web...如果你在项目中遇到任何技术问题,可以寻求作者的帮助,共同讨论解决方案,提升技术水平。通过这个实例,开发者可以深入理解这些技术的集成使用,提高实际开发能力。

    spring3.0企业版第二章运行所需要的jar包集合

    接下来,我们将详细讨论这些标签所涉及的技术和jar包的作用。 首先,Spring框架是Java企业级应用开发的核心组件,它提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,使得应用程序的结构更加清晰,易于测试和...

    普元eos-springbean开发

    本文将围绕“普元EOS-SpringBean开发”这一主题展开讨论,重点讲解SpringBean在普元EOS中的开发与配置流程,以及通过具体案例来深入理解其应用场景。 ### SpringBean开发与配置 #### SpringBean简介 SpringBean是...

    Spring Security3 中文版 张卫滨 推荐

    - **应用技术栈**:列出了构建该应用所需的技术,如Spring MVC、Hibernate等。 - **查看审计结果**:指导如何查看和分析安全审计记录,帮助开发者更好地了解系统的安全性状况。 - **认证与授权**:简单介绍了认证与...

    精通spring mvc 4 看透springmvc pdf 高清完全版

    同时,还讨论了Spring MVC如何与Ajax技术结合,实现页面的无刷新更新,提高用户体验。 对于RESTful Web服务的支持,Spring MVC提供了一套强大的工具,允许开发者创建符合REST原则的API。书中详细介绍了如何定义...

    spring security 与ssm框架整合的一个小 demo

    SSM框架指的是Spring、Spring MVC和MyBatis的集成,是Java Web开发中常用的技术栈。现在我们将详细讨论如何将Spring Security整合到SSM框架中。 首先,我们需要在项目中引入Spring Security的依赖。在 Maven 的pom....

    基于Spring Boot、Spring Cloud、Vue.js 、Element UI实现权限管理系统,JAVA快速开发平台

    接下来,我们将详细讨论这些技术在系统中的应用及其重要性。 首先,Spring Boot是Spring框架的一种简化版,它内置了Tomcat服务器,简化了配置,使得开发者可以更快地搭建和运行应用程序。Spring Boot的核心特性包括...

    spring+velocity+ibatis

    下面将详细讨论这些技术以及它们在Java Web开发中的作用。 **Spring框架**是Java企业级应用开发的核心框架,提供了依赖注入(DI)和面向切面编程(AOP)等核心功能。Spring通过管理对象的生命周期和配置,简化了...

Global site tag (gtag.js) - Google Analytics