`
arcticfox9902
  • 浏览: 108592 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

第一次用Spring Controller

阅读更多

       最近开始用spring,很多东西都不会 ,老大让写个远程接口,于是开始自己动手...看了前辈给的例子,Controller倒是一看就明白大概是怎么回事,可是怎么配置还是不会。边google边摸索着写,花了两天时间终于搞定了。本来是很简单的东西,不会的时候就觉得很难,可是用心去学,总会让它变简单的。
        长时间不用估计又忘了,还是整理出来吧,方便自己也希望能帮到别人。

        1、先写Controller,一个简单的例子如下:

@Controller
@RequestMapping("/welcome.do")
public class WelcomeController {

@RequestMapping
public void hello(HttpServletRequest request, HttpServletResponse response) throws IOException {

PrintWriter out = response.getWriter();
String value = request.getParameter("value");
if(value != null && value.length() > 0) {
response.setHeader("value", value);
out.println("<h1>" + value + "</h1>");
} else {
out.println("<h1>no param</h1>");
}
out.flush();
out.close();
}
} 

 

        2、配置文件——web.xml:

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext*.xml</param-value>
	</context-param>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<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>*.do</url-pattern>
	</servlet-mapping>

         3、配置文件——spring-servlet.xml:

<!-- 把标记了@Controller注解的类转换为bean -->
	<context:component-scan base-package="sample" />

	<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

	<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
	
	<!-- 处理Mutipart文件上次的bean -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
		p:defaultEncoding="utf-8" />

        其实上面的controller里直接是对response操作,没有转发给视图,所以上面的spring-servlet.xml中第二个bean没有用到,如果需要将请求转发给视图,则需要用到这个bean。

        这样就完成了,简单吧,我还用了那么久才搞定...真是丢人死了。

        然后,写个简单的测试程序。我的项目目录是testController,因此本地测试的url是:http://localhost:8080/testController/welcome.do。代码如下:

public class TestController {
	
	public static void main(String[] args) {  
		HttpClient httpClient = new HttpClient();
 		PostMethod postMethod = new PostMethod("http://localhost:8080/testController/welcome.do");
		postMethod.setParameter("value", "Welcome!");
        
        try {
        	httpClient.executeMethod(postMethod);
        	System.out.println("Response:");
        	System.out.println(postMethod.getStatusLine());
        	for(Header header : postMethod.getResponseHeaders()) {
    			System.out.println(header);
    		}
               System.out.println(postMethod.getResponseBodyAsString());
               } catch  (HttpException e)  {
        	    e.printStackTrace();
               } catch  (IOException e)  {
        	    e.printStackTrace();
               } catch (Exception e){
        	    e.printStackTrace();
               }finally {
        	    postMethod.releaseConnection();
               }
	}
}

        打印出来的结果与Controller中一致。这些都搞定了,然后去Controller中改写项目的逻辑。

 

        感想:

        果然还是再开一个project来学这些东西比较快。之前在项目的代码里直接写,本地重启的时间就够我去喝杯茶了 ...师兄一开始就告诉我重新开个project做,但是当时很不想再重新部署(之前一次耗了很多时间,最后还是师兄帮我弄好的,心里有点怕怕 ),就直接在原来的工程里写了。后来忍无可忍,干脆心一横,开个新的project得了,兔子逼急了也会咬人呢,我就不信连项目部署都搞不定,大不了网上多找找。

        新的项目部署时还是遇到一个问题,tomcat版本不兼容Dynamic Web Module,然后在Properties里的Project Facets里改Dynamic Web Module的版本时报错:Connot change version of project facet Dynamic Web Module to XXX,在网上找到的解决办法是:项目根目录下的.settings文件夹里有个org.eclipse.wst.common.project.facet.core.xml文件,打开一看就明白了,这个文件里把版本号写死了:<installed facet="jst.web" version="3.0"/>,把版本号3.0改为需要的版本就可以了。

 

        以上。

 

 

分享到:
评论
2 楼 brucelovejava 2013-11-15  
  女生学编程还是很稀奇,挺一个。
1 楼 wufabeishang 2012-12-18  
分享的还可以看得却是挺简单,比较明白了

相关推荐

    Spring笔记(第一次)1

    Spring框架是Java应用程序开发中的一个核心库,它提供了一个丰富的依赖注入(DI)容器,使得对象的创建和管理变得简单。本笔记将介绍如何从传统的XML配置方式转换为使用注解进行开发,以及Spring的@ComponentScan扫描...

    shop第一次做的项目.zip_spring_网上商城 spring_购物_购物SpringMVC_购物商城项目

    标题中的"shop第一次做的项目.zip_spring_网上商城 spring_购物_购物SpringMVC_购物商城项目"揭示了这是一个基于Spring框架的初次尝试构建的网上购物商城项目。这个项目不仅运用了Spring框架,还结合了SpringMVC和...

    Spring笔记.docx

    1. **控制反转(Inversion of Control, IoC)**:IoC是Spring的核心特性之一,通过这种方式,对象的创建和管理交由Spring容器负责,从而降低了组件间的耦合度。 2. **依赖注入(Dependency Injection, DI)**:DI是...

    一步步实现Spring框架(一)项目搭建

    在本系列教程的第一部分,我们将着手构建一个Spring框架的基础架构,以深入了解其工作原理和内在机制。这将有助于我们深入理解Java编程,并增强对依赖注入(Dependency Injection, DI)和控制反转(Inversion of ...

    spring第二次课测试

    在“spring第二次课测试”中,我们将探讨以下几个关键知识点: 1. **依赖注入**:这是Spring的核心功能之一,允许开发者通过外部配置文件来管理对象之间的依赖关系,而不是在代码中硬编码这些依赖。这使得代码更加...

    【BAT必备】spring面试题,spring MVC面试题,spring boot面试题,spring cloud面试题

    它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)中的快速解决方案。 #### 2. Eureka服务发现 Eureka是Netflix...

    spring mvc + spring + hibernate 全注解整合开发视频教程 09

    【标题】"Spring MVC + Spring + Hibernate 全注解整合开发视频教程 09" 提供了一次深入了解Java企业级应用开发的机会,特别是在使用Spring MVC、Spring和Hibernate这三大核心框架进行全注解配置的场景下。...

    spring Framework 中文参考开发手册

    Spring Cloud 是一组工具,用于快速构建分布式系统中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等功能。它使开发人员能够轻松地创建具有云...

    spring定时器

    - **initialDelay**:在第一次执行之前等待的时间(毫秒)。 - **fixedDelay**:每次执行后等待的时间(毫秒),与`fixedRate`类似,但计算下次执行的时间基于上一次任务的实际完成时间。 - **zone**:用于cron...

    spring整合quartz定时任务调度

    CronTrigger可以使用cron表达式来定义触发规则,例如每分钟执行一次: ```java @Bean public CronTrigger myJobTrigger() { CronTrigger trigger = new CronTrigger(); trigger.setName("myJobTrigger"); trigger...

    Spring笔记(第四次)1

    在CAP9章节中,我们创建了`TestController`、`TestService`和`TestDao`等类,它们被扫描并加载到Spring的IOC容器中。通过在`TestService`类中使用`@Autowired`注解,Spring会自动寻找与`TestDao`类型匹配的bean并...

    第一次ssm项目.zip

    在"第一次SSM项目"中,你可以期待看到这些配置文件、实体类、Mapper接口、DAO实现、Service接口和服务实现以及Controller类的示例。通过实际操作这个项目,你将能更好地理解和掌握SSM框架的集成与应用。 **总结** ...

    spring快速入门教程

    在"Spring快速入门教程.pdf"中,你将深入学习如何创建第一个Spring项目,配置Bean,使用AOP,搭建Spring MVC应用,以及如何整合Spring Boot和Spring Cloud。通过实际操作,你会对Spring有更直观的理解,并能迅速上手...

    spring ppt

    标题中的“spring ppt”指的是关于Spring框架的一系列PowerPoint演示文稿,这通常是一次讲座或教程的材料。从描述中的博文链接来看,这可能是一个技术博主分享的关于Spring框架的深入学习资源。标签“源码”和“工具...

    energen:第一次尝试学习 spring

    在本文中,我们将深入探讨"energen:第一次尝试学习 spring"这一项目,它是一个初学者在探索Spring框架和Hibernate集成的实践中创建的应用程序。Spring是一个广泛使用的Java企业级应用程序开发框架,而Hibernate则是...

    Spring注解驱动开发.pdf

    - **`@Lazy`注解**:延迟加载bean,即只有当第一次请求bean时才会初始化。 ##### 5. 自动装配 - **`@Autowired`注解**:用于自动装配bean,可以在字段或构造函数中使用。 - **`@Qualifier`注解**:与`@Autowired`...

    SSH2 annotation 实现struts2.1.6 spring2.5.6 hibernate3.3 全注解开发

    当你声明一个实体的一对多或一对一关系为“懒加载”时,不会在获取主对象时立即加载关联对象,而是在第一次访问这些关联对象时才发起数据库查询。这样可以提高程序的运行效率,避免大数据量的加载导致的性能问题。 ...

    SSM项目整合第一次修改

    在这个"SSM项目整合第一次修改"中,我们主要探讨的是如何将这三个框架进行有效的集成,以实现高效、灵活的后端业务逻辑处理。 首先,Spring框架作为基础,它提供了依赖注入(Dependency Injection,DI)和面向切面...

    Spring3.2.6定时任务+线程池.docx

    2. **延迟启动** (`delay`): 设置了任务第一次执行前的延迟时间,单位为毫秒。这里设置为1000毫秒,即1秒。 3. **任务周期** (`period`): 设置了任务重复执行的时间间隔,单位为毫秒。这里设置为10000毫秒,即10秒。...

    Spring2.5学习笔记

    - **Lazy Initialization**:可以使用 `lazy-init="true"` 来延迟 Bean 的初始化,这意味着只有在第一次请求 Bean 时才会进行初始化。 - **Default Lazy Initialization**:若希望对所有 Bean 都应用懒加载,则...

Global site tag (gtag.js) - Google Analytics