spring 中如何实现jsp与java的交互

 我来答
千锋教育
2015-12-13 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

spring中利用mvc框架就可以实现jsp和java交互了。

以下用spring mvc输出hello world为例来说明:

一、项目依赖的jar包:

1.Spring框架依赖的jar包:

日志:commons-logging-1.1.3.jar;

JSTL支持:jakarta-taglibs-standard-1.1.2中的jstl.jar和standard.jar;

2.Spring的jar包:

spring-framework-3.2.5.RELEASE/libs中的jar包(这里为了方便我直接把全部都复制过去了);

把以上的jar包全部复制到项目的WebContent/WEB-INF/lib目录中。

二、在/WEB-INF中添加web.xml文件,文件内容如下:

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 <display-name>SpringMVCLesson</display-name>
       
   <servlet>
       <servlet-name>SpringMVCLesson</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:springservlet-config.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup><!-- load-on-startup必须放在最后 -->
   </servlet>
   <!-- Spring MVC配置文件结束 -->
   
   <servlet-mapping>
       <servlet-name>SpringMVCLesson</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>
</web-app>

三、springservlet-config.xml文件配置:

在项目中新建一个resources的Source Folder文件夹,并添加springservlet-config.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:util="http://www.springframework.org/schema/util"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/util
 http://www.springframework.org/schema/util/spring-util.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc.xsd" >
   
   <!-- 默认的注解映射的支持 -->  
   <mvc:annotation-driven/>
     
   <!-- 如果当前请求为“/”时,则转发到“/helloworld/index” -->
   <mvc:view-controller path="/" view-name="forward:/helloworld/index"/>
   <!-- 静态资源映射 -->
   <mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
   <mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
   <mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
   <mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
   <mvc:resources mapping="images/**" location="/WEB-INF/images/" />
   <!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
   <mvc:default-servlet-handler/>

   <!-- 开启controller注解支持 -->
   <!-- use-default-filters="false" 只扫描指定的注解 -->
   <context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
   </context:component-scan>
     
   <!-- 视图解析器 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
      <property name="contentType" value="text/html"/>        
      <property name="prefix" value="/WEB-INF/views/"/>
      <property name="suffix" value=".jsp"/>
   </bean>
   
</beans>

<mvc:annotation-driven/> 开启注解映射支持,它是为了简化配置的缩写形式,它相当于以下2个配置:

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

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

由于我们在web.xml文件里面配置的是拦截所有的请求到该servlet,所以我们在这里要对静态资源文件映射作一下配置,否则请求这些资源文件会返回404:

<!-- 静态资源映射 -->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="images/**" location="/WEB-INF/images/" />
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/>

开启Controller注解支持,并配置只扫描指定包下面的Controller:

<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
   <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

配置视图解析器,并指定视图所在的文件夹:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  <property name="contentType" value="text/html"/>        
  <property name="prefix" value="/WEB-INF/views/"/>
  <property name="suffix" value=".jsp"/>
</bean>

添加HelloWorldController,在项目中新建一个web的Source Folder文件夹,并在文件夹下面添加com.demo.web.controllers包,在包中添加一个HelloWorldController类,类中内容如下:

package com.demo.web.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/helloworld")
public class HelloWorldController {

   @RequestMapping(value="/index", method = {RequestMethod.GET})
   public ModelAndView index(){
       
       ModelAndView modelAndView = new ModelAndView();  
       modelAndView.addObject("message", "Hello World!");  
       modelAndView.setViewName("index");  
       return modelAndView;
   }
   
}

其中@Controller 注解把该class指定为controller,controller 上的@RequestMapping 注解的 value值指定该controller所映射的请求。

方法上的@RequestMapping 注解指定该方法为一个action,value 值指定该action所映射的请求,method 中的RequestMethod.GET指定该action只接受get请求。

ModelAndView 中的setViewName指定了该action所对应的视图名称,解析视图时会在springservlet-config.xml文件指定的视图文件夹中寻找对应的视图。

 

添加视图,在项目/WEB-INF文件夹下新建一个views文件夹,并在views中添加index.jsp视图,视图内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   ${message}
</body>
</html>

运行项目输出结果:

heyan12127
推荐于2017-10-04 · TA获得超过804个赞
知道答主
回答量:274
采纳率:0%
帮助的人:198万
展开全部
1:servlet,一个JSP页面经过编译后是一个servlet类,可以通过servlet进行交互。
2:添加Struts框架,通过Struts进行交互。
3:JS,Ajax或者DWR,不过用DWR的话似乎也用不到spring了。
4:标签。有自定义标签,spring也有自己的标签,可以进行交互。
5:与第一个办法类似,JSP本身可以嵌套java代码,当成是2个java类之间的交互就行。
追问
赞同第4句,标签。我昨天发现在applicationContext.xml中有这样的写法

COntroller

单词可能打错了但大概的意思应当表达了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友333d04c
2012-02-21
知道答主
回答量:3
采纳率:0%
帮助的人:4548
展开全部
1、可以采用返回值的方式给jsp显示
2、通过属性,jsp中使用标签库tag
追问
前提是用spring。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
was1840
2012-02-21 · TA获得超过118个赞
知道答主
回答量:70
采纳率:0%
帮助的人:50.4万
展开全部
spring +velocity就可以
追问
我不太懂velocity,根本不知道那是啥子。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式