之前写过一个基于XML的,今天试一试能不能写错一个基于XML,花了一小会时间,出来了。springmvc主要是确实简单。
2.接下来看spring-servlet.xml
3.applicationContext.xml在这里没用,如果要用DB,什么DAO注入的时候加就可以了。
修改:4.看Controller:
1.首先看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_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<!-- 配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
<!-- 就是启动Web容器时,自动装配ApplicationContext的配置信息 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- springmvc配置文件 -->
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2.接下来看spring-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<!-- 把标记了@Controller注解的类转换为bean对象 -->
<context:component-scan base-package="com.zzg.mvc.control" />
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/" p:suffix=".jsp" />
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="utf-8" />
</beans>
3.applicationContext.xml在这里没用,如果要用DB,什么DAO注入的时候加就可以了。
4.看Controller:
@Controller
@RequestMapping("/test.do")//请求该类的路径http://127.0.0.1:8080/springmvcan/test.do
public class ContralDemo {
//请求该方法的路径http://127.0.0.1:8080/springmvcan/test.do?method=demo
@RequestMapping(params = "method=demo")
public String demo(Person p,HttpServletRequest request, ModelMap modelMap) throws Exception{
System.out.println("ContralDemo.demo()");
System.out.println(p.getName());
request.setAttribute("demo","SUCCESS FOR DEMO");
return "success";
}
}
因为我测试表单提交,所以url可以写在form里面,
提示:很多的时候我们不是传递几个参数过来,是一堆一堆的传过来,需要接受bean注入,就像struts2一样,springmvc作为新青年当然也会支持,所以如果你想将一个javabean也一次性注入,就像我上面注入一个person一样,形参就可以了,前台form在下面。不需要p.name这样写在form的name中,直接name="name",就可以了。bean如下:
public class Person {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
如下:
<body>
<form action="test.do?method=demo" method="post">
<input type="hidden" name="method" value="demo">
<input name="name" value="aaa"></input>
<input name="pwd" value="bbb"></input>
<input type="submit">sss</input>
</form>
如果成功跳转如下:success.jsp
提示:这里的success和controller的teturn对应,要不InternalResourceViewResolver的作用如何体现。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<html>
<body>
OK!!!--------<br>
${demo}
</body>
</html>
加:
2014-1-24
今天忽然想起来了,使用MVC肯定会用到AJAX,所以我就自己百度了一下,简单改了一下,可以实现AJAX传递内容。
修改:2.接下来看spring-servlet.xml
如下:
<context:annotation-config />
<!-- 把标记了@Controller注解的类转换为bean对象 -->
<context:component-scan base-package="com.zzg.mvc.control" />
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name="messageConverters">
<list >
<ref bean="mappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>
<!-- 告诉容器我有mappingJacksonHttpMessageConverter这个东西,可以处理json的转换
supportedMediaTypes的意思是设置编码,如果不加默认的编码是iso8859什么那个系统的。
-->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/" p:suffix=".jsp" />
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="utf-8" />
</beans>
修改:4.看Controller:
加了下面一个方法:在上面的那个类里面
//请求该方法的路径http://127.0.0.1:8080/springmvcan/demo.do
@RequestMapping(value="/test.do",params = "method=test")//value="/demo.do",
@ResponseBody
public Object test(HttpSession session){
System.out.println("test..!!!!!!
return "aaaaa";
}
你想返回什么return什么即可。
jsp页面如下:
function test(){
$.ajax({
type: "post",
url: "test.do",
data: "method=test",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}