08SpringMvc_(1)继承AbstractCommandController的Action[能够以实体的形式,收集客户端参数].(2)日期转换器和编码过滤器
上一篇文章说过要介绍两个控制器。这篇文章就介绍第二个控制器AbstractCommandController(这个类已经快要被废弃了,有更好的代替者,但还是要好好学这个类)。这个控制器的额作用是为了收集提交的参数,
比如说之前的写法是://获取员工的姓名 String username=request.getParameter("username");这样去收集参数,提交的参数一多这样很不方便,所以引入了AbstractCommandController。记住SringMVC中的Action是单例模式,Strut2中的Action是多例模式,所以这就造成了他们收集参数的方式是绝对不同的。
案例如下:
案例结构图:
aaarticlea/png;base64,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" alt="" />
先给出具体代码实现,在进行讲解。
第一步:先写index.jsp.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="${pageContext.request.contextPath}/adduser.action" method="post">
<table border="2" align="center">
<tr>
<th>姓名</th>
<td> <input type="text" name="username" /></td>
</tr> <tr>
<th>性别</th>
<td> <input type="radio" name="gender" value="男" />男
<input type="radio" name="gender" value="女" checked/>女
</td>
</tr>
<!-- <tr>
<th>入职时间</th>
<td> <input type="text" name="username" /></td>
</tr>
-->
<tr>
<td>
<input type="submit" value="提交">
</td> </tr>
</table> </form> </body>
</html>
第二步:写Emp.java,这个文件里面的属性就是要和前面的jsp页面提交的数据要完全吻合(名字必须要一模一样)。就是为了收集页面数据的。
package com.guigu.shen.Action4; public class Emp {
//名字(与表单中的name属性必须要一模一样)
private String username;
//性别
private String gender;
/**
* @return the username
*/
/**
*
*/
public Emp() {
// TODO Auto-generated constructor stub
}
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the gender
*/
public String getGender() {
return gender;
}
/**
* @param gender the gender to set
*/
public void setGender(String gender) {
this.gender = gender;
}
}
第三步:写EmpAction.java
package com.guigu.shen.Action4; import javax.jws.WebParam.Mode;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController; public class EmpAction extends AbstractCommandController{
/**
* 我们知道SpringMvc的Action是单例模式的,所以他收集从页面传过来的参数的方式与Struts2不一样
* SpringMVC能够以实体的形式,收集客户端参数
*/
//mvc会走无参的构造器,可以通过里面的代码(this.setCommandClass(Emp.class);),匹配jsp页面中的参数信息
public EmpAction() {
//第一步:自动将表单参数封装到Emp对象中
this.setCommandClass(Emp.class);
System.out.print("EmpAcion的无参构造函数");
} /*
* 参数command表示可以分装好的实体类(Emp)
*
*/
@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception { ModelAndView modelAndView=new ModelAndView(); //第二步:command就是Emp对象传进来的。
System.out.println("handle方法");
Emp emp=(Emp) command;
modelAndView.addObject("message", "增加员工成功");
System.out.println("员工的名字"+emp.getUsername());
System.out.println("员工的性别"+emp.getGender());
modelAndView.setViewName("/jsp/success.jsp"); return modelAndView;
} }
第四步:springmvc_004.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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
<!-- 控制器(程序员)(必须配置) --> <bean name="/adduser.action" class="com.guigu.shen.Action4.EmpAction"></bean>
<!-- 映射器 -->
<!-- 适配器
SimpleControllerHandlerAdapter不仅能去找实现了Controller接口的Action
还能去找继承了AbstractCommandController类的Action --> </beans>
第五步:springmvc.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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
<import resource="com/guigu/shen/Action4/springmvc_004.xml"/>
</beans>
第六步: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" 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">
<display-name>SpringMvc_10day_self</display-name>
<servlet>
<!--这个名字可以随便取得,但是这个名字取了之后,以后在 WEB-INF下面创建SpirngMVC的配置文件是,命名必须以这个开头, 所以这里取名叫做DispatcherServlet,那么之后的xml文件取名必须为DispatcherServlet-servlet.xml(一个字都不能差) -->
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 通知DispatcherServlet去指定目录下找到springmvc.xml配置文件 -->
<!--
注意这里的 <param-name>contextConfigLocation</param-name>一个字母都不能有错
一旦有错就会去WEB-INF下面去找
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
</web-app>
运行:输入:http://127.0.0.1:8080/SpringMvc_10day_self/
结果是:正常运行。但是有一个问题。控制台从网页那边得到的中文乱码:
员工的名字?¨???±??±
员工的性别???
先不管这个,我们讲一下这个案例的执行流程:我们要现实的功能其实就是从index.xml页面上输入员工的姓名和性别。然后在EmpAtion中得到这些属性。这里用的是在EmpAction中定义Emp这么一个类,然后由这个类会自动去装配信息。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
好,介绍好流程以后,我们再来解决一下上面的乱码问题。我们以前解决这种问题通常是在EmpAction.java中加一句request.setCharacterEncoding("utf-8");
我们先试试看这样可以吗?试了,答案是不可以。
Spring提供了一个Filter专门用来解决Post提交中文的乱码问题。需要在web.xml中配置。
aaarticlea/png;base64,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" alt="" />
好,我们按照上面的做法去试试。
修改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" 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">
<display-name>SpringMvc_10day_self</display-name>
<!-- Spring提供了一个Filter专门用来解决Post提交中文的乱码问题 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <servlet>
<!--这个名字可以随便取得,但是这个名字取了之后,以后在 WEB-INF下面创建SpirngMVC的配置文件是,命名必须以这个开头, 所以这里取名叫做DispatcherServlet,那么之后的xml文件取名必须为DispatcherServlet-servlet.xml(一个字都不能差) -->
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 通知DispatcherServlet去指定目录下找到springmvc.xml配置文件 -->
<!--
注意这里的 <param-name>contextConfigLocation</param-name>一个字母都不能有错
一旦有错就会去WEB-INF下面去找
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
</web-app>
输出:员工的名字爱爱
员工的性别女
问题解决了。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
这个问题解决了,我们在加一个功能,在员工的入职日期也加进去。在index.xml中修改代码。如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="${pageContext.request.contextPath}/adduser.action" method="post">
<table border="2" align="center">
<tr>
<th>姓名</th>
<td> <input type="text" name="username" /></td>
</tr> <tr>
<th>性别</th>
<td> <input type="radio" name="gender" value="男" />男
<input type="radio" name="gender" value="女" checked/>女
</td>
</tr>
<tr>
<th>入职时间</th>
<td> <input type="text" name="userdata" value="2015-3-2" /></td>
</tr> <tr>
<td>
<input type="submit" value="提交">
</td> </tr>
</table> </form> </body>
</html>
然后在Emp.java中也修改代码,多一个Data userdata属性。
package com.guigu.shen.Action4; import java.util.Date; public class Emp {
//名字
private String username;
/**
* @return the userdata
*/
public Date getUserdata() {
return userdata;
}
/**
* @param userdata the userdata to set
*/
public void setUserdata(Date userdata) {
this.userdata = userdata;
}
//性别
private String gender;
private Date userdata;
/**
* @return the username
*/
/**
*
*/
public Emp() {
// TODO Auto-generated constructor stub
}
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the gender
*/
public String getGender() {
return gender;
}
/**
* @param gender the gender to set
*/
public void setGender(String gender) {
this.gender = gender;
}
}
再在EmpAction.java中加一句 System.out.println("員工的入職日誌"+emp.getUserdata().toLocaleString());
package com.guigu.shen.Action4; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController; /*
* Create by 沈晓权
* Create on 2016年8月7日下午8:28:10
*/
public class EmpAction extends AbstractCommandController{
/**
* 我们知道SpringMvc的Action是单例模式的,所以他收集从页面传过来的参数的方式与Struts2不一样
* SpringMVC能够以实体的形式,收集客户端参数
*/
//mvc会走无参的构造器,可以通过里面的代码(this.setCommandClass(Emp.class);),匹配jsp页面中的参数信息
public EmpAction() {
//第一步:自动将表单参数封装到Emp对象中
this.setCommandClass(Emp.class);
System.out.print("EmpAcion的无参构造函数");
} /*
* 参数command表示可以分装好的实体类(Emp)
*
*/
@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception { ModelAndView modelAndView=new ModelAndView(); //第二步:command就是Emp对象传进来的。
System.out.println("handle方法");
Emp emp=(Emp) command;
modelAndView.addObject("message", "增加员工成功");
System.out.println("员工的名字"+emp.getUsername());
System.out.println("员工的性别"+emp.getGender());
System.out.println("員工的入職日誌"+emp.getUserdata().toLocaleString());
modelAndView.setViewName("/jsp/success.jsp"); return modelAndView;
} }
运行之后:结果不行。直接出错。
Request processing failed; nested exception is java.lang.NullPointerException
出错的原因是在收集从index.xml的数据时出错了,导致Emp没有被实例化,然后造成空指针了。 怎么解决呢?
aaarticlea/png;base64,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" alt="" />
当然,不一定要是yyy-MM-dd这种形式的,是可以改的。
我们修改下代码:
package com.guigu.shen.Action4; import java.text.SimpleDateFormat;
import java.util.Date; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.crypto.Data; import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController; public class EmpAction extends AbstractCommandController{
/**
* 我们知道SpringMvc的Action是单例模式的,所以他收集从页面传过来的参数的方式与Struts2不一样
* SpringMVC能够以实体的形式,收集客户端参数
*/
//mvc会走无参的构造器,可以通过里面的代码(this.setCommandClass(Emp.class);),匹配jsp页面中的参数信息
public EmpAction() {
//第一步:自动将表单参数封装到Emp对象中
this.setCommandClass(Emp.class);
System.out.print("EmpAcion的无参构造函数");
} /*
* 参数command表示可以分装好的实体类(Emp)
*
*/
@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception { ModelAndView modelAndView=new ModelAndView(); //第二步:command就是Emp对象传进来的。
System.out.println("handle方法");
Emp emp=(Emp) command;
modelAndView.addObject("message", "增加员工成功");
System.out.println("员工的名字"+emp.getUsername());
System.out.println("员工的性别"+emp.getGender());
System.out.println("員工的入職日誌"+emp.getUserdata().toLocaleString());
modelAndView.setViewName("/jsp/success.jsp"); return modelAndView;
} @Override
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
/*
向springmvc内部注入一个自定义的类型转换器
参数一:将String转换成什么类型的字节码
参数二:自定义转换规则
*/
binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true) );
} }
问题解决了。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
最后我们再实现一个功能:把emp这个类封装到modelAndView。传递给success.jsp然后在success.jsp中把emp里面的数据显示出来。
EmpAction.java改为
/**
* Create by 沈晓权
* Create on 2016年8月7日下午8:28:10
*/
package com.guigu.shen.Action4; import java.text.SimpleDateFormat;
import java.util.Date; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.crypto.Data; import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController; /*
* Create by 沈晓权
* Create on 2016年8月7日下午8:28:10
*/
public class EmpAction extends AbstractCommandController{
/**
* 我们知道SpringMvc的Action是单例模式的,所以他收集从页面传过来的参数的方式与Struts2不一样
* SpringMVC能够以实体的形式,收集客户端参数
*/
//mvc会走无参的构造器,可以通过里面的代码(this.setCommandClass(Emp.class);),匹配jsp页面中的参数信息
public EmpAction() {
//第一步:自动将表单参数封装到Emp对象中
this.setCommandClass(Emp.class);
System.out.print("EmpAcion的无参构造函数");
} /*
* 参数command表示可以分装好的实体类(Emp)
*
*/
@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception { ModelAndView modelAndView=new ModelAndView(); //第二步:command就是Emp对象传进来的。
System.out.println("handle方法");
Emp emp=(Emp) command;
modelAndView.addObject("message", "增加员工成功");
System.out.println("员工的名字"+emp.getUsername());
System.out.println("员工的性别"+emp.getGender());
System.out.println("員工的入職日誌"+emp.getUserdata().toLocaleString());
modelAndView.addObject("emp", emp);
modelAndView.setViewName("/jsp/success.jsp"); return modelAndView;
} /* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.BaseCommandController#initBinder(javax.servlet.http.HttpServletRequest, org.springframework.web.bind.ServletRequestDataBinder)
*/
@Override
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true) );
} }
success.jsp改为:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
Success. <br>
${message}
姓名:${requestScope.emp.username }</br>
入职时间:${requestScope.emp.userdata }</br>
</body>
</html>
运行结果为:增加员工成功 姓名:爱爱
入职时间:Mon Mar 02 00:00:00 CST 2015
发现入职时间这个显示格式不好。我们修改一下success.jsp的代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
Success. <br>
${message}
姓名:${requestScope.emp.username }</br>
入职时间:${requestScope.emp.userdata }</br>
<!-- 1)fmt:formatDate 来源于http://java.sun.com/jsp/jstl/fmt
2)fmt:formatDate作用是格式化日期的显示。例如2015年5月10号 星期五
3) value表示需要格式化的值
4)typez表示现实的日期,时间都要显示
type=data表示只显示 日期
type=time 表示只显示时间
type=both 时间个日期都要显示
dateStyle="full"这个有好几种格式,看具体的要求
-->
入职时间:<fmt:formatDate
value="${requestScope.emp.userdata}"
type="date"
dateStyle="full"
/>
</body>
</html>
运行结果是:
增加员工成功 姓名:爱爱
入职时间:Mon Mar 02 00:00:00 CST 2015
入职时间:2015年3月2日 星期一
结束。
08SpringMvc_(1)继承AbstractCommandController的Action[能够以实体的形式,收集客户端参数].(2)日期转换器和编码过滤器的更多相关文章
- 关于继承modelDriven接口action的ajax来电参数
例如 Model类如下面,Teacher,public class Teacher{ private Integer id. priavte String name; private Sch ...
- 限制action所接受的请求方式或请求参数
原文:http://www.cnblogs.com/liukemng/p/3726897.html 2.限制action所接受的请求方式(get或post): 之前我们在HelloWorldContr ...
- 控制器中的Action方法,接收浏览器传过来的参数,总共有几种?
1.根据配置文件中的URL规则 public ActionResult Delete(int id) //id参数就是根据路由里面的参数id来传过来的,这个action方法中的参数一定要和路由中的id ...
- Struts2中的链接标签 <s:url>和<s:a>---在action中获取jsp表单提交的参数(转)
转自:http://sgl124764903.iteye.com/blog/444183 1.普通链接 Web程序中最普通的应用是链接到其他页面,下面看Welcome.jsp. <%@ page ...
- SSH框架下ajax调用action并生成JSON再传递到客户端【以get和post方式提交】
需要完成的任务: 主要是把JSP页面上图片ID传给服务器端,服务器读取cookie看是否有username,如果有则根据ID读取MongoDB数据库,读出图片URL,再存放到mysql中的collec ...
- jQuery find() 搜索所有段落中的后代 C# find() 第一个匹配元素 Func 有返回值 Action是没有返回值 Predicate 只有一个参数且返回值为bool 表达式树Expression
所有p后代span Id为 TotalProject 的 select 标签 的后代 option标签 为选中的 text using System; using System.Collections ...
- Spring MVC学习总结
Spring MVC学习总结 Spring MVC学习路(一) 下载配置文件 Spring MVC学习路(二) 设置配置文件 Spring MVC学习路(三) 编写第一个demo Spring MVC ...
- springmvc 学习笔记_1
一.回顾JavaWeb中的MVC设计模式 1)MVC这种设计模式,不光运用于Web领域,而且也能用于非Web领域 2)今天说的MVC特指一种表现层设计模式,不限于Java语言 二.回顾struts2+ ...
- 30、springmvc
第一章回顾JavaWeb中的MVC设计模式 1)MVC这种设计模式,不光运用于Web领域,而且也能用于非Web领域 2)今天说的MVC特指一种表现层设计模式,不限于Java语言 第二章回顾struts ...
随机推荐
- 【读书笔记】iOS-GCD-Dispatch Queue
一,Dispatch Queue的实现: 1,用于管理追加的Block的C语言层实现的FIFO队列. 2,Atomic函数中实现的用于排他控制的轻量级信号. 3,用于管理线程的C语言层实现的一些容器. ...
- 【转载】菜鸟Ubuntu下安装Android Studio
原文:http://forum.android-studio.org/forum.php?mod=viewthread&tid=236&extra=page%3D1%26filter% ...
- OC语言-03-OC语言-三大特性
一.封装 1> 封装的定义 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别 2> 封装的好处 可以通过set方法防止为成员变量设置不合理的值 仅向外部提供公 ...
- 二维码扫描利用ZBar实现
上次是根据系统的属性自己封装的一个二维码扫描,这次给大家介绍一下基于ZBar集成的类似于QQ二维码扫描界面的二维码扫描的效果. ...
- myeclipse10安装findbugs
尝试过myeclipse10环境下,在线安装findbugs,插件包是能下载到指定目录下,可是由于版本问题,findbugs插件是不能使用的.所以才有了下面的离线安装 离线安装findbugs 操作系 ...
- Effective Java 08 Obey the general contract when overriding equals
When it's the case that each instance of the class is equal to only itself. 1. Each instance of the ...
- Force.com平台基础
当我开始写这篇博客的时候,<Force.com Platform Fundamentals>的PDF版本我还没看到十分之一.由于PDF全部是英文的,所以我看起来比较吃力.我尝试过边看边做笔 ...
- 处理 InterruptedException——Brian Goetz
本文转自Brian Goetz大师在IBM的developerWorks中发布的文章: 中文地址:http://www.ibm.com/developerworks/cn/java/j-jtp0523 ...
- 从SqlServer现有数据生成Insert脚本
步骤1,打开"Generate and Publish Objects"向导.右键点击要导出数据的数据库,选择Taks->GenerateScript 步骤2,选择要导出数据 ...
- cocos2d-x之单点触碰初试
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size size=Director::getInstance()- ...