springmvc错点集结

<c:forEach items="${material}" var="ma">              //后台传回来的列表必须由foreach接收
<tr>
<td align="center">${ma.consumptivematerialname }</td>   //对象值可以直接接收
<td align="center"><input type="text" style="100px;height:15px" id="resetnum" name="resetnum"/></td>
<td align="center">3</td>
<td align="center">4</td>
</tr>
</c:forEach>

-----------------------------------------------------------------------------------------------------------------------------------------------------------

<td  align="center"><input type="hidden" id="consumptivematerialname" name="consumptivematerialname" value="${ma.id}"/>${ma.consumptivematerialname }</td>   //<td>里面不能放value    放在input里隐藏

----------------------------------------------------------------------------------------------------------------------------------------------

jsp页面显示问题

 <c:if test="${fn:length(item.desc)>50}">${fn:substring(item.desc, 0, 50)}...</c:if>
<c:if test="${fn:length(item.desc)<=50}">${item.desc}</c:if>

判断显示元素的长度是否大于50,如果大于50,则截取前50个字符,后面有… 表示。

------------------------------------------------------------------------------------------------------------------------------------------------

客户体验度良好问题

<p>
<label style="text-align: right; 80px;">联系电话:</label>
<input type="text" name="tel" id="add_tel" size="30" class="required" onblur="checktelphone();"/>     //已经写好的星号标记
<span id="add_tel_span" style="display:none;"><font color="red">不能为空</font></span>          //隐藏的不能为空的标记,颜色为红色
<span id="add_telnum_span" style="display:none;"><font color="red">必须为数字</font></span>
</p>

jquery判断

var tels = /^+?[1-9][0-9]*$/;       //正则表达式
if(tel==''){
$("#add_tel_span").show();         //如果为空,根据ID让内容显示show()
return;                                     //return返回   拦截ajax提交
}else
if(!tels.test(tel)){

// $("#add_tel_span").hide();                                 //hide()方法对应show()方法     效果同下      
$("#add_tel_span").css("display","none");              //设置不能为空的样式为隐藏
$("#add_telnum_span").show();                                 //显示必须为数字
return;
}

----------------------------------------------------------------------------------------------------------------------------------------------

注释的作用

1、 @PathVariable: someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上,
变量名称不一致,需要在@PathVariable("name")指定uri template中的名称。
2.@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。
3.@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。
4.@RequestParam:常用来处理简单类型的绑定, 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;
5.@RequestBody:该注解常用来处理Content-Type,它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。

6.@Controller       声明controller

7.

@Autowired                 //controller中引用Service
private DeviceService deviceService;

8.@Service                //声明Service

9.@javax.annotation.Resource               //Service中引用Mapper

private DeviceMapper deviceMapper;

-----------------------------------------------------------------------------------------------------------------------------------------------------

添加与修改问题                 

添加与修改不同         修改时必须传id值到后台

<input type="hidden" id="id" value="${product.id }"/>       //表单中设置隐藏标签      存放id值用来传递

----------------------------------------------------------------------------------------------------------------------------------------------------------

jsp页面判断问题

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="java.security.MessageDigest"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>    //声明调用

<span  style="text-align: right;  float:right;font-size:12px; font-weight:bold;">上次操作时间:<fmt:formatDate value='${device.materialupdatetime }' type='date' pattern='yyyy-MM-dd HH:mm:ss'/></span>    //日期格式化

<td  align="center">${ma.usedQuantity}<c:if test="${ma.unit!=null and ma.usedQuantity!=0  }">(${ma.unit })</c:if></td>

//jsp页面判断  符合条件则执行其中的代码

------------------------------------------------------------------------------------------------------------------------------------------------------

Controller中使用@ResponseBody用与返回一个对象,返回return的值到前台

----------------------------------------------------------------------------------

 String.trim()

trim()是去掉首尾空格
 
 
--------------------------------------------------------------------------------------------------------------------------------------t
统一编码  客户端传中文用"utf-8",服务器端接收也该使用"utf-8".
修改配置文件D:apache-tomcat-7.0.59confserver.xml
    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>
 
------------------------------------------------------------------------------------------------------------------------------------
获取到String类型日期加减天数        //例子加一天

function nextday() {
var date1 = $("#todaydate").val();         //获取String类型日期
var date2=new Date(date1);       //转Date类型
var date="";
date+=date2.getFullYear()+"-"+(date2.getMonth()+1)+"-"+(date2.getDate()+1);    //转字符串   获取Date类型的年月日拼接字符串   月份从0开始  天数加一
window.location.href = "${ctx}/appointment/toappointment?date="
+ date;
}

 ----------------------------------------------------------------------------------------------------------------------------------------

多对多的关系   表结构   myhabits查询   存在中间表

例:n+1次查询  不推荐

<select id="selectUserRole" parameterType="java.lang.String" resultType="sy.model.UserRole">
SELECT               //select中的id接收方法名       <id column="id" property="id" jdbcType="INTEGER" /> 关联查询表中的唯一标识
tuser_trole.ID,
tuser_trole.ROLE_ID,                                   //parameterType   参数类型

tuser_trole.USER_ID                  //resultType返回值类型自己定义    resultMap返回值类型 可继承
FROM
tuser_trole
where tuser_trole.user_id=#{id,jdbcType=VARCHAR}
</select>
<resultMap type="sy.model.User" id="userResultMap" extends="BaseResultMap">
<collection property="userRoles" column="ID" javaType="list" select="selectUserRole" />       //重写resultMap     存在继承    

</resultMap>                                    property 里的参数跟model里的对应  映射到具体的属性

                                      column跟别名一样 指定唯一标识用户信息的列
<select id="getAll" resultMap="userResultMap">                            //collection 标签代表集合  使用ofType 指定映射到集合属性中pojo的类型

                                  //association代表对象  使用javaType   映射到user的哪个属性

select ID, CREATEDATETIME, MODIFYDATETIME, NAME, PWD from tuser
</select>

这个<include refid="Base_Column_List" />refid会自动把上面的代码贴过来。



----------------------------------------------------------------------------------------------------------------------------------------------

列数相同的两个表格行自动匹配宽度

jQuery(function($) {
var tab1_width = $("#tab1 tr:first td").length;

for(i=0;i<tab1_width;i++)
{
$("#tab2 tr:first th").eq(i).width($("#tab1 tr:first td").eq(i).width());
}


});

---------------------------------------------------------------------------------------------------------------------------------------------------------

sql语句  DISTINCT 去重     下面根据卡id去重 保证出现的卡id唯一   可以查出使用卡项的数量  

SELECT (SELECT COUNT(DISTINCT cardId) FROM t_customer_consumption_detail WHERE busid=3 AND (SELECT shopid FROM t_customer_consumption WHERE t_customer_consumption.id=
t_customer_consumption_detail.consumptionId)=#{shopid}
<if test="start != null" >
<![CDATA[ and t_customer_consumption_detail.createDatetime >= #{start} ]]>
</if>
<if test="end != null" >
<![CDATA[ and t_customer_consumption_detail.createDatetime <= #{end} ]]>
</if>
)opencnt

FROM t_customer_consumption_detail b
GROUP BY opencnt

-------------------------------------------------------------------------------------------------------------------------------------------------------

java Controller获取当前时间

1.Date end = new Date();

2.用于获取时间段,近半年,今年  可以直接设置

Calendar cal_1 = Calendar.getInstance();// 获取当前日期
cal_1.add(Calendar.MONTH, 0);
cal_1.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
cal_1.set(Calendar.HOUR, 0);
cal_1.set(Calendar.SECOND, 0);
cal_1.set(Calendar.MINUTE, 0);
Date start = cal_1.getTime();

//获取时间后记得转时间格式

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String startString = "";
String endString = "";
if(start!=null){
startString = format.format(start);
try {
start = format.parse(startString);
} catch (ParseException e) {
e.printStackTrace();
}
}
if(end!=null){
endString = format.format(end);
try {
end = format.parse(endString);
} catch (ParseException e) {
e.printStackTrace();
}
}

 -------------------------------------------------------------------------------------------------------------------------------------------------------

java后台Controller  String类型的时间比较

在保证日期格式都一致的情况下,可以使用compareTo()方法:

//判断时间是否过期
Date nowDate=new Date();
String nowDatetime = sdf.format(nowDate);
int result3 = starttime.compareTo(nowDatetime);
if(result3<=0){
return "-1";
}

结果大于0,表示starttime晚于nowDatetime,等于0则相同,小于0starttime早于nowDatetime

-----------------------------------------------------------------------------------------------------------------------------------------------

mybatis一个参数是List集合   用foreach

List<Integer> busList = new ArrayList<Integer>();
String[] stringArr = serviceStr.split(";");
for (int i = 0; i < stringArr.length; i++) {
busList.add(i);
}
if (busList.get(0) == 0) {
busList = null;
}
params.put("busid", busList);

<select id="newconsumpsByParam" resultMap="BaseResultMap"
parameterType="map">
select
*
from t_customer_consumption t
where t.status=1
AND t.shopid =
#{shopid}
<if test="groupid!=null and groupid!='' and groupid!=0">
<![CDATA[ AND (select t_customer_group.id from t_customer_group where id =
(select groupid from t_customer_info where t_customer_info.id = t.customerId)) = #{groupid} ]]>
</if>
<if test="enddate!=null and enddate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) <= #{enddate}]]>
</if>
<if test="startdate!=null and startdate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) >= #{startdate}]]>
</if>
</select>

<select id="superSearchByParams" resultMap="BaseResultMap"
parameterType="map">
select
*
from t_customer_consumption t
where t.status=1
<if test="shopid!=null and shopid!='' and shopid!=0 ">
<![CDATA[ AND t.shopid = #{shopid} ]]>
</if>
<if test="customername!=null and customername!=''">
and t.customername LIKE CONCAT(CONCAT('%',
#{customername,jdbcType=VARCHAR}),'%')
</if>
<if test="orderno!=null and orderno!=''">
<![CDATA[ AND t.orderno = #{orderno} ]]>
</if>
<if test="status!=null and status!='' and status!=0 ">
<![CDATA[ AND t.statisticstatus = #{status} ]]>
</if>
<if test="waiterid!=null and waiterid!='' and waiterid!=0 ">
<![CDATA[ AND t.cashierId = #{waiterid} ]]>
</if>
<if test="enddate!=null and enddate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) <= #{enddate}]]>
</if>
<if test="startdate!=null and startdate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) >= #{startdate}]]>
</if>
<if test="busid!=null and busid.size()>0">
AND t.id in
(select consumptionid from t_customer_consumption_detail b where b.busid in <foreach collection="busid" item="item" index="index"
open="(" separator="," close=")">#{item}</foreach>)
</if>
</select>

-------------------------------------------------------------------------------------------------------------------------------------------------

提成规则计算    工资收税方式

//根据规则计算提成        achievement 业绩总和
public BigDecimal calculateCommission(CommissionClass c,BigDecimal achievement){
BigDecimal commission = new BigDecimal(0);
//业绩为负,提成为0
if(achievement.doubleValue()<0){
return new BigDecimal(0);
}
//升序排列的规则集合
List<CommissionRule> rules = commissionRuleMapper.findByClassId(c.getId());
for(int i=0;i<rules.size();i++){
//大于当前规则临界值
if(rules.get(i).getBreakvalue().doubleValue()<achievement.doubleValue()){
//下一级提成规则存在且大于该临界值
if((i+1)<rules.size()&&achievement.doubleValue()>rules.get(i+1).getBreakvalue().doubleValue()){
Double d = rules.get(i+1).getBreakvalue().doubleValue() - rules.get(i).getBreakvalue().doubleValue();
d = d * rules.get(i).getPercentage().doubleValue()/100;
BigDecimal b = new BigDecimal(d);
d = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留两位小数
commission = new BigDecimal(commission.doubleValue()+d);
}
//下一级提成规则存在且小于该临界值
else if((i+1)<rules.size()&&achievement.doubleValue()<=rules.get(i+1).getBreakvalue().doubleValue()){
Double d = achievement.doubleValue() - rules.get(i).getBreakvalue().doubleValue();
d = d * rules.get(i).getPercentage().doubleValue()/100;
BigDecimal b = new BigDecimal(d);
d = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留两位小数
commission = new BigDecimal(commission.doubleValue()+d);
}
//下一级提成规则不存在
else if((i+1)>=rules.size()){
Double d = achievement.doubleValue() - rules.get(i).getBreakvalue().doubleValue();
d = d * rules.get(i).getPercentage().doubleValue()/100;
BigDecimal b = new BigDecimal(d);
d = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留两位小数
commission = new BigDecimal(commission.doubleValue()+d);
}
}
}
return commission;
}

-----------------------------------------------------------------------------------------------------------------------------------------------

//后台返回json字符串

function select_bigprojecttypeid(obj) {
try {
var id = $(obj).val();
//var unitachievement = $(obj).parent().parent().find('.unitachievement');
var unitprice = $(obj).parent().parent().find('.unitprice');
if (id != 0) {
$.ajax({
url : '${ctx}/card/selectByBigProjecttypeId',
type : 'post',
cache : false,
async : false,
data : {
id : id
},
error : function() {
alertMsg.warn('请按照提示正确填写!');
},
success : function(data) {
var data = jQuery.parseJSON(data);          //转格式  要解析的 JSON 字符串 
//unitachievement.val(data.achievement);
unitprice.val(data.price);
}
});
}
} catch (e) {
console.error("我次哦,有异常了~", e);
}
}

@RequestMapping(value = { "/selectByBigProjecttypeId" }, method = RequestMethod.POST)
@ResponseBody   //返回必须要的注解
public String selectByBigProjecttypeId(HttpServletRequest request,
@RequestParam(value = "id") Integer id)
throws JsonProcessingException {
Object objshopid = request.getSession().getAttribute("shopid");
Integer shopid = (Integer) objshopid;
BigProject project = null;
try {
project = itemService.findBigProjectByParams(id, shopid);
} catch (Exception ex) {
return null;
}
ObjectMapper mapper = new ObjectMapper();          //objectmapper json转对象
String json = mapper.writeValueAsString(project);
return json;    //返回json字符串
}

-------------------------------------------------------------------------------------------------------------------------------------------

equals和==

java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

int类型比较相等可以用==  基本数据类型只能用==   

integer包装类一般不使用==  以后碰到Integer比较值是否相等需要用equals  如果integer一定要用==比较的话   数值后面加intValue()方法也可

 -------------------------------------------------------------------------------------------------------------------------------------------------

mysql  mybatis  返回生日提醒天数

SELECT * FROM
(SELECT DATEDIFF (current_birthady ,CURRENT_DATE()) AS diffDays,customerName FROM
(
SELECT *, STR_TO_DATE( CONCAT(YEAR( CURRENT_DATE () ) ,'-',MONTH(birthday),'-',DAY(birthday)), '%Y-%m-%d ') AS current_birthady
FROM t_customer_info
WHERE DATEDIFF(DATE_ADD(CONCAT(DATE_FORMAT(birthday,"%Y"),DATE_FORMAT(CURDATE(),"%m%d")),INTERVAL 7 DAY),birthday)
BETWEEN 0 AND 7 OR DATEDIFF(DATE_ADD(CONCAT(DATE_FORMAT(birthday,"%Y"),DATE_FORMAT(CURDATE(),"%m%d")),INTERVAL 7 DAY),birthday)>=365
) t
WHERE shopId=#{shopid}
) t ORDER BY diffDays

----------------------------------------------------------------------------------------------------------------------------------------------------

mysql  查询和时间有关

SELECT paramvalue AS LevelName, paramkey LEVEL ,
IFNULL(day60,0 ) day60,
IFNULL(day30, 0 ) day30,
IFNULL(day90,0 ) day90,
IFNULL(dayhalfyear, 0 ) dayhalfyear,
IFNULL(dayyear ,0) dayyear FROM
(SELECT paramvalue ,paramkey FROM t_sys_data_dictionary WHERE typeid =
(SELECT id FROM t_sys_data_type WHERE typecode = 'accident_grade')
) a
LEFT JOIN
(SELECT eventLevel ,
SUM( CASE WHEN
TIMESTAMPDIFF(DAY,happenDatetime,CURRENT_DATE()) &lt;31 THEN 1
ELSE 0
END) day30,
SUM( CASE WHEN
TIMESTAMPDIFF(DAY,happenDatetime,CURRENT_DATE()) &lt;61 THEN 1
ELSE 0
END) day60,
SUM( CASE WHEN
TIMESTAMPDIFF(DAY,happenDatetime,CURRENT_DATE()) &lt;91 THEN 1
ELSE 0
END) day90,   //返回天数  当前日期-happenDatetime小于91    即90天内
SUM( CASE WHEN
TIMESTAMPDIFF(MONTH,happenDatetime,CURRENT_DATE()) &lt;7
THEN 1 ELSE 0
END) dayhalfyear,  //返回月数  当前日期-happenDatetime小于7    即半年(六个月)内
SUM( CASE WHEN
TIMESTAMPDIFF(YEAR,happenDatetime,CURRENT_DATE()) &lt;2 THEN
1 ELSE 0
END) dayyear

FROM t_he_research_info
GROUP BY eventLevel ) b
ON
a.paramkey = b.eventLevel
ORDER BY paramkey

-----------------------------------------------------------------------------------------------------------------------------------------------

mybatis自增主键返回

例1:<insert id="insertSelectiveWithReturnId" useGeneratedKeys="true" keyProperty="id" parameterType="com.mybatis.model.customer.CustomerPackageCard" >

insert into t_customer_package_card (id, customerId, cardName,
price, memo, status,
createdatetime, cardNo, cardTypeId,
isreapply)
values (#{id,jdbcType=INTEGER}, #{customerid,jdbcType=INTEGER}, #{cardname,jdbcType=VARCHAR},
#{price,jdbcType=DECIMAL}, #{memo,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
#{createdatetime,jdbcType=TIMESTAMP}, #{cardno,jdbcType=VARCHAR}, #{cardtypeid,jdbcType=INTEGER},
#{isreapply,jdbcType=INTEGER})

</insert>

例2:

<insert id="insert" parameterType="com.mybatis.model.customer.CustomerPackageCard" >

<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">   //order:相对于insert来说他的执行顺序
select LAST_INSERT_ID()
</selectKey>

insert into t_customer_package_card (id, customerId, cardName,
price, memo, status,
createdatetime, cardNo, cardTypeId,
isreapply)
values (#{id,jdbcType=INTEGER}, #{customerid,jdbcType=INTEGER}, #{cardname,jdbcType=VARCHAR},
#{price,jdbcType=DECIMAL}, #{memo,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
#{createdatetime,jdbcType=TIMESTAMP}, #{cardno,jdbcType=VARCHAR}, #{cardtypeid,jdbcType=INTEGER},
#{isreapply,jdbcType=INTEGER})
</insert>

---------------------------------------------------------------------------------------------------------------------------------

 form里的button触发了submit,form里没有action属性时,请求无效,也有返回值

当项目从服务器上下架时,上传的文件全部会消失!!!

 -------------------------------------------------------------------------------------------------------------------------------------------------------
后台接收json串

@RequestMapping("/updateResearchInfo")
@ResponseBody
public String updateResearchInfo(String str, HttpServletRequest request,HttpSession session)
throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
HeResearchInfo info = mapper.readValue(str, HeResearchInfo.class);
researchService.updateResearchInfo(info);
User user =(User) session.getAttribute("user");
logService.writeLog(user,7,"修改人为差错成功");
return "ok";
}

----------------------------------------------------------------------------------------------------------------------------------------

表单序列化 data:$('#addVersion-form').serialize(),// 你的formid

获取到的是name的值

传递json串   就是str:str

传递json对象   就是把contenttype定义为json

----------------------------------------------------------------------------------------------------------------------------------------------------------------

input 文本框 只能输入数字

<td>数量:</td>
<td>
<input type="text" style="150px;" class="ipt form-control" id="quantity" onkeyup="this.value=this.value.replace(/[^d]/g,'') " onafterpaste="this.value=this.value.replace(/[^d]/g,'') "/>   //正则非数字自动置为空

-----------------------------------------------------------------------------------------------------------------------------------------------

&和&&的区别

&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。如&&例子中的i++>5被执行了,而i++<9并没有被执行,这就是他们的差别。&例子中的i++>5和i++<9都被执行了。


</td>

--------------------------------------------------------------------------------------------------------------------------------------------

全选,反选以及返回已选复选框的个数与总数

<div class="form-group"  >
                  <label  class="col-sm-2 control-label">预备党员<span class="text-danger">*</span></label>
                  <div class="col-sm-10">
                    <input type="checkbox"   name="selectall">全选<label id="appendtext">,已选择0人,共3人</label>
                  </div>
                </div>
                
                <div class="form-group"  >
                 <label  class="col-sm-2 control-label"></label>
                  <div class="col-sm-10">
                    <input type="checkbox"   name="member" value="2">1
                      <input type="checkbox"   name="member" value="2">2
                        <input type="checkbox"   name="member" value="2">3
                  </div>
                </div>

js部分

$(function(){
 $("input[name='selectall']").change(function(){//判断全选框的改变
  var all= 0;   //总数
  var select = 0;//选中
     var flage =$(this).is(":checked");//全选选中为true,否则为false
     $("input[name='member']").each(function(){
        $(this).prop("checked",flage);
         all+=1;
         if($(this).is(":checked")){
         select+=1;   //选中加1
         }
     });
     $("#appendtext").html("");
     $("#appendtext").append(",已选择"+select+"人,共"+all+"人");
 });
 
  $("input[name='member']").change(function(){//判断每一个复选框的改变
  var all= 0;   //总数
  var select = 0;//选中
     $("input[name='member']").each(function(){
         all+=1;
         if($(this).is(":checked")){
         select+=1;   //选中加1
         }
     });
     $("#appendtext").html("");
     $("#appendtext").append(",已选择"+select+"人,共"+all+"人");
 });
});

-------------------------------------------------------------------------------------------------------------------------------------------

静态方法是类方法,不需要去实例化类就可以调用这个方法,静态方法内部使用的是静态变量,这些就相当于全局变量,有类就有方法。它可以不创建类的实例而被调用。
但是静态方法是要占用内存的,而且如果全都是静态方法,那么你的类也确实没什么必要了。
-----------------------------------------------------------------------------------------------------------------------------------------------
正则表达式两大类
import java.util.regex.Matcher;
import java.util.regex.Pattern;
方式一:
Pattern p=Pattern.compile("\d+"); 
Matcher m=p.matcher("22bb23"); 
m.matches();//返回false,因为bb不能被d+匹配,导致整个字符串匹配未成功. 
Matcher m2=p.matcher("2223"); 
m2.matches();//返回true,因为d+匹配到了整个字符串 
方式二:调用静态方法
Pattern.matches("\d+","2223");//返回true 
Pattern.matches("\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到 

-----------------------------------------------------------------------------------------------------------------------

HttpServletRequest cannot be resolved to a type。

 
问题描述:
HttpServletRequest cannot be resolved to a type。
Multiple markers at this line
- The import javax.servlet.http cannot be resolved
- The import javax.servlet.http cannot be resolved
- The import javax.servlet.http cannot be resolved
解决方案:
1.这个错误可能是服务器自带的servlet库未导入的原因。
2.右键项目属性,转到Targeted Runtimes,选择一个服务器,例如Tomcat,单击应用,可能就可以解决。


当能力支撑不了野心时,就该静下心来学习!
原文地址:https://www.cnblogs.com/1234cjq/p/5748792.html