`
arcticfox9902
  • 浏览: 107107 次
  • 性别: 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-mvc-showcase:演示Spring MVC Web框架的功能

    Spring MVC展示柜 ...如果这是您第一次使用Github,请查看以了解基础知识。 要运行该应用程序: 在Maven的命令行中: $ cd spring-mvc-showcase $ mvn jetty:run 在以下位置访问已部署的Web应用程序:

    spring-mvc-showcase

    Spring MVC 展示 通过小而简单的示例演示 Spring MVC...如果这是您第一次使用 Github,请查看以了解基础知识。 要运行应用程序: 从命令行使用 Maven: $ cd spring-mvc-showcase $ mvn tomcat7:run [-Dmaven.tomcat

    java版飞机大战源码-spring-boot-restful-api:springbootrestful风格API从零到一完整实践

    自己第一次接触 restful 是在学习 vue 的时候,第一次看见的时候,真的打心底里的喜欢。不仅是因为其一致的规范性,还有他的简单明了,都让我眼前一亮的感觉。现在对于一些程序,都是提倡的前后端分离,各干各的互不...

    spring-mvc-showcase:SpringMVC

    Spring MVC 展示 通过小而简单的示例演示 Spring MVC...如果这是您第一次使用 Github,请查看以了解基础知识。 要运行应用程序: 从命令行使用 Maven: $ cd spring-mvc-showcase $ mvn tomcat7:run [-Dmaven.tomcat

    spring-mvc-showcase:网路应用程式

    Spring MVC展示柜 ...如果这是您第一次使用Github,请查看以了解基础知识。 要运行该应用程序: 从命令行使用Maven: $ cd spring-mvc-showcase $ mvn jetty:run 在以下位置访问已部署的Web应用程序:

    jsp:弹簧启动(jpa,tomcat-jsp)

    倒是第一次发现@Controller和@RestController的区别(实际上是第一次用@RestController, 要json我都@ResponseBody了...) LoginFilter即使不在MyConfiguration中注册也可以, 不过注册上也不麻烦嘛, 而且想不用的时候...

    springboot-:记录实现高并发的解决方案

    springboot-demo 记录实现高并发的解决方案 day01 1.springboot整合druid多数据源和log4j2 (1)实现数据源,主数据库(写),从数据库(读),读写分离的方案之一 ...把第一次前端传过来的加密的+数据库查询的

    第一个人工作:第一次个人编程作业

    第一人称工作 src |main |java |api |DockApi // 用友API接口 |controller |MapController // 处理请求的控制器 |resource |spring |applicationContext.xml //spring配置文件 |dispatch-servlet.xml // ...

    java面试题

    Struts1只是在第一次请求的时候创建一个action实例,以后每次相同的请求都直接从内存中去读取,它是单例模式,安全性较差。 Struts2是如何实现MVC模式的? 答:在Struts2里面是将每次页面的请求进行处理,然后将请求...

    stock-market-pattern-recognition-frontend:此存储库仅用于团队协作

    最简单的@Controller 映射请求获取请求数据生成响应消息转换器渲染视图类型转换验证形式上传文件异常处理获取代码: 克隆存储库: $ git clone git://github.com/SpringSource/spring-mvc-showcase.git如果这是您第...

    springmvc-showcase

    最简单的@Controller 映射请求获取请求数据生成响应消息转换器渲染视图类型转换验证形式上传文件异常处理获取代码: 克隆存储库: $ git clone git://github.com/SpringSource/spring-mvc-showcase.git如果这是您第...

    maven-demo-web:Maven演示网络

    Spring MVC展示柜 通过小的简单示例演示Spring ...如果这是您第一次使用Github,请查看以了解基础知识。 要运行该应用程序: 从命令行使用Maven: $ cd spring-mvc-showcase $ mvn tomcat7:run [-Dmaven.tomcat.port

    OA项目SSH整合框架

    1,对于集合属性,默认是lazy="true"的,在第一次使用时才加载。 2,但在加载时,如果Session已经关掉了就会抛LazyInitializationException异常 二,集成 Spring 与 Struts2.1.8.1 1,在web.xml配置监听器...

    WebChat:使用SSM框架搭建一个WEBCHAT在线聊天的软件

    chatUser/login.do 路径会被SpringMVC的控制器DispatcherServlet截取,(在第一次执行的时候,加载spring_mvc.xml文件 会创建的对象是:biz对象以及controller对象 ,保存请求路径和controller的对应关系 chatUs

    springboot+oltu.oauth2搭建oauth2环境

    一般的oauth配置下就可以用了,但是我这个项目,是用原理上讲如何搭建oauth2,哪个controller转发到哪个controller,为什么这样,都有清楚的介绍,因为结构简单,只有一个骨架,很适合进行二次开发。解压后会有两个...

    单点登录源码

    通用用户管理系统, 实现最常用的用户注册、登录、资料管理、个人中心、第三方登录等基本需求,支持扩展二次开发。 &gt; zheng-wechat-mp 微信公众号管理平台,除实现官网后台自动回复、菜单管理、素材管理、用户管理...

    基于Java的客户关系管理系统的设计与实现(全文).docx

    Spring-mvc框架的Controller目前已经可以完全替代Struts的ction来处理扫瞄器的请求,而在配置上,Spring-mvc比Struts基于Java的客户关系管理系统的设计与实现(全文)全文共6页,当前为第2页。基于Java的客户关系管理...

    基于ssm+shiro+redis+nginx tomcat服务器集群管理项目源码+项目说明.zip

    第一次部署项目 1.修改ssm-rs\resources目录下db.properties的数据库账号密码信息 2.启动redis服务端,修改ssm-rs\resources\spring-config目录下spring-shiro.xml中redis的连接信息,没设置密码的话auth...

    java微信公众号MVC开发框架

    jwx是开源的java公众号开发MVC框架,基于spring配置文件和微信消息或事件注解,通过微信上下文处理一个或多个微信公众号服务请求。目的主要有两个,其一生封装微信请求xml消息为java实体对象,将返回对象转换为xml...

    基于uniapp+springboot实现的声纹考勤系统app设计毕业源代码+文档说明+sql文件

    本考勤系统项目前端采用基于跨平台的Uniapp设计,开发工具采用Hbuilder,可以实现一次开发多端发布。这个考勤系统不同于传统的考勤系统,可以实现对接讯飞开放平台,其中的声纹识别api文档地址:...

Global site tag (gtag.js) - Google Analytics