SSM框架bootstrap增刪改查和組合分頁查詢功能管理模塊,解決日期字符串自動-1天等問題
推薦文章:
解決JsonFormat日期少一天問題
:https://blog.csdn.net/haitaofeiyang/article/details/51203512
(PS:果然,在知道問題根源后,百度這個問題的描述,找到同樣的問題的解決方法的文章等等,是更高效的方法)



本期精彩內(nèi)容推薦:
解決Ssm框架在執(zhí)行修改功能時把獲得的日期字符串自動-1天的問題
增加功能
修改功能
刪除功能
推薦網(wǎng)站
項目運行效果
邊看教程視頻邊做的學(xué)習(xí)筆記記錄
具體代碼例子
如何讓oracle中的日期增加一天
Userinfo?.java
UserinfoSqlMap.xml
注意事項:

登錄:http://localhost:8080/Ssmbootstrap2/toLogin
記得UserinfoSqlMap.xml中SQL語句中的sbirth的b是小寫的,和bean中的屬性對應(yīng),如果是大寫就會報錯
如果登錄時報錯可能是數(shù)據(jù)庫出現(xiàn)重復(fù)數(shù)據(jù),建議甚至數(shù)據(jù)庫的用戶名列為唯一約束
/*其實private UserCountAllService
的命名可能不一定要和UserCountAllService拼寫一樣,
且首字母小寫,拼寫不一樣或就是首字母不小寫的
UserCountAllService也可以運行成功,效果還是有的,
但為了方便查看而習(xí)慣上這樣“拼寫一樣,
且首字母小寫”地命名*/
springmvc-servlet.xml中寫訪問路徑
UserinfoSqlMap.xml中寫SQL語句部分
項目運行效果:





增加功能 START


增加功能 END

修改功能 START




修改功能 END

刪除功能 START




刪除功能 END







解決Ssm框架在執(zhí)行修改功能時把獲得的日期字符串自動-1天的問題 START
如何讓oracle中的日期增加一天:


解決Ssm框架在執(zhí)行修改功能時把獲得的日期字符串自動-1天的問題 END
邊看教程視頻邊做的學(xué)習(xí)筆記記錄 START



邊看教程視頻邊做的學(xué)習(xí)筆記記錄 END
具體代碼例子 START
?--drop table Userinfo? ? ? ? ? ? ? ??
create table Userinfo(
? ? id number primary key,
? ? act varchar2(30) not null,
? ?pwd varchar2(30) not null,
? ?birth date
);
--drop sequence seq_Userinfo
create sequence seq_Userinfo
start with 1? ? ? ?--起始值是1
increment by 1? ? ?--增長的值? ?
maxvalue 999999999 --序列號的最大值
minvalue 1? ? ? ? ?--序列號的最小值
nocycle? ? ? ? ? ? --是否循環(huán)
cache 10;? ? ? ? ? --預(yù)存
insert into Userinfo values(seq_Userinfo.nextval,'黑黑','pwd1',to_date('2020-06-06','yyyy-mm-dd'));



? ? @DateTimeFormat(pattern="yyyy-MM-dd")//頁面寫入數(shù)據(jù)庫時格式化
? ??@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")//數(shù)據(jù)庫導(dǎo)出頁面時json格式化
? ??


package com.SSHC.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.SSHC.bean.Userinfo;
import com.SSHC.service.PubService;
@Controller
public class LoginController {
@Resource
private PubService pubService;
@RequestMapping("RequestMappingLogin")
? ? public String doLogin(@ModelAttribute("SpringWeb") Userinfo u
? ? ,HttpSession session,Model m){
? ? u = pubService.login(u);
? ? System.out.println("u:"+u);
? ? if(u != null && u.getId() > 0) {
? ? //將u放到session中去
? ?
? ? session.setAttribute("_user", u);
? ? ? ? return "index";
? ? } else {
? ? m.addAttribute("msg","登錄失敗");
? ? return "login";
? ? }
? ? }
}


package com.SSHC.controller;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.SSHC.bean.Userinfo;
import com.SSHC.service.UserCountAllService;
@Controller
public class UserController {
@Resource
private UserCountAllService userCountAllService;
private Map<String,Object>map = new HashMap<String,Object>();
@RequestMapping(value = "ld",method = RequestMethod.GET)
? ? public @ResponseBody Map<String,Object>loadData(@ModelAttribute("SpringWeb") Userinfo u){
System.out.println("每頁顯示:" + u.getRows());
System.out.println("顯示第" + u.getPage() + "頁的數(shù)據(jù)");
System.out.println("輸入的查詢賬號是:" + u.getAct());
System.out.println(u.getSbirth());
System.out.println(u.getEbirth());
//亂碼處理
String act = u.getAct();
try {
if(act != null) {
act = new String(act.getBytes("iso8859-1"),"utf-8");
System.out.println(act);
act = "%" + act + "%";
u.setAct(act);
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}? ?
? ? List<Userinfo>list = userCountAllService.loadAll(u);
? ? map.put("rows", list);
? ? map.put("total", userCountAllService.countAll(u));
? ? return map;
? ? }
@RequestMapping(value = "add",method = RequestMethod.POST)
public @ResponseBody Map<String,Object>doAdd(@ModelAttribute("SpringWeb") Userinfo u){
Integer count = userCountAllService.update(u);
map.put("ct", count);
return map;
}
@RequestMapping(value = "edit",method = RequestMethod.POST)
public @ResponseBody Map<String,Object>doEdit(@ModelAttribute("SpringWeb") Userinfo u){
Integer count = userCountAllService.edit(u);
map.put("ct", count);
return map;
}
@RequestMapping(value = "del",method = RequestMethod.POST)
public @ResponseBody Map<String,Object>doDelete(@ModelAttribute("SpringWeb") Userinfo u){
Integer count = userCountAllService.delete(u.getId());
map.put("ct", count);
return map;
}
}


package com.SSHC.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.SSHC.bean.Userinfo;
@Repository
public interface UserinfoDao {
? ? List<Userinfo> selectAll(Userinfo u);
? ? Userinfo selectByActAndPwd(Userinfo u);
? ? //統(tǒng)計總記錄條數(shù)的方法
? ? List<Userinfo> totalAll(Userinfo u);
? ? Integer add(Userinfo u);
? ? Integer edit(Userinfo u);
? ? Integer delete(Integer id);
}


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
? ? PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"??
? ? "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace不能亂寫,必須寫成IUserinfoDao接口的全路徑 -->
<mapper namespace="com.SSHC.dao.UserinfoDao">
? ? <sql id="query">
? ? ? ? <where>
? ? <if test="act != null and act.length() > 0">
? ? ? ? and act like #{act}
? ? </if>
? ? <if test="sbirth != null">
? ? ? ? and birth >= #{sbirth}
? ? </if>
? ? <if test="ebirth != null">
? ? ? ? and birth <= #{ebirth}
? ? </if>
</where>
? ? </sql>
? ? <resultMap type="Userinfo" id="rmUserinfo">
? ? ? ? <id property="id" column="ID"/>
? ? <result property="act" column="ACT"/>
? ? <result property="pwd" column="PWD"/>
? ? <result property="birth" column="BIRTH"/>
? ? </resultMap>?
? ? <select id="selectAll" resultMap="rmUserinfo" parameterType="Userinfo">
? ? ? ? select * from
(
select t1.*,rownum rn from
(select * from userinfo
<include refid="query"></include>
) t1
where rownum <= #{end}
)
where rn >= #{start}
? ? </select>?
? ? <!-- List<Userinfo> totalAll(Userinfo u) -->
? ? <select id="totalAll" resultMap="rmUserinfo" parameterType="Userinfo">
? ? ? ? select * from userinfo
? ? ? ? <include refid="query"></include>
? ? </select>
? ? <!-- Userinfo selectByActAndPwd(String act,String pwd) -->
? ? <select id="selectByActAndPwd" resultMap="rmUserinfo"
? ? ? ? parameterType="Userinfo">
? ? ? ? select * from userinfo where act = #{act}?
? ? ? ? and pwd = #{pwd}
? ? </select>
? ? <!-- Integer add(Userinfo u); -->
? ? <insert id="add" parameterType="Userinfo">
? ? ? ? insert into userinfo(id
? ? ? ? <if test="act != null and act.length() > 0">
? ? ? ? ? ? ,act
? ? ? ? </if>
? ? ? ? <if test="pwd != null and pwd.length() > 0">
? ? ? ? ? ? ,pwd
? ? ? ? </if>
? ? ? ? <if test="birth != null">
? ? ? ? ? ? ,birth
? ? ? ? </if>
? ? ? ? ) values(seq_userinfo.nextval
? ? ? ? <if test="act != null and act.length() > 0">
? ? ? ? ? ? ,#{act}
? ? ? ? </if>
? ? ? ? <if test="pwd != null and pwd.length() > 0">
? ? ? ? ? ? ,#{pwd}
? ? ? ? </if>
? ? ? ? <if test="birth != null">
? ? ? ? ? ? ,#{birth}
? ? ? ? </if>
? ? ? ? )
? ? </insert>
? ? <!-- Integer edit(Userinfo u); -->
? ? <update id="edit" parameterType="Userinfo">
? ? ? ? update userinfo?
? ? ? ? <set>
? ? ? ? ? ? <if test="act != null and act.length() > 0">
? ? ? ? ? ? ? ? act = #{act},
? ? ? ? ? ? </if>
? ? ? ? ? ? <if test="pwd != null and pwd.length() > 0">
? ? ? ? ? ? ? ? pwd = #{pwd},
? ? ? ? ? ? </if>
? ? ? ? ? ? <if test="birth != null">
? ? ? ? ? ? ? ? birth =#{birth}
? ? ? ? ? ? </if>
? ? ? ? </set>
? ? ? ? <where>
? ? ? ? ? ? <if test="id != null and id != ''">
? ? ? ? ? ? ? ? and id = #{id}
? ? ? ? ? ? </if>
? ? ? ? </where>
? ? </update>
? ? <!-- Integer delete(Integer id); -->
? ? <delete id="delete">
? ? ? ? delete from userinfo where id = #{id}
? ? </delete>
</mapper>


package com.SSHC.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.SSHC.bean.Userinfo;
import com.SSHC.dao.UserinfoDao;
@Service
@Transactional
public class PubService {
//屬性名就是接口名的首字母改成小寫
@Resource
? ? private UserinfoDao userinfoDao;
? ??
? ? //登錄方法
? ? public Userinfo login(Userinfo u){
? ? return userinfoDao.selectByActAndPwd(u);
? ? }
}


package com.SSHC.service;
import java.util.List;
import com.SSHC.bean.Userinfo;
public interface UserCountAllService {
? ? List<Userinfo>loadAll(Userinfo u);
? ? Integer countAll(Userinfo u);
? ? Integer update(Userinfo u);
? ? Integer edit(Userinfo u);
? ? Integer delete(Integer id);
}


package com.SSHC.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.SSHC.bean.Userinfo;
import com.SSHC.dao.UserinfoDao;
@Service
@Transactional
public class UserService implements UserCountAllService {
@Resource
? ? private UserinfoDao userinfoDao;
@Override
public List<Userinfo> loadAll(Userinfo u) {
// TODO Auto-generated method stub
//處理分頁參數(shù)
Integer page = u.getPage();
Integer rows = u.getRows();
Integer start = (page - 1) * rows + 1;
Integer end = page * rows;
u.setStart(start);
u.setEnd(end);
return userinfoDao.selectAll(u);
}
@Override
public Integer countAll(Userinfo u) {
// TODO Auto-generated method stub
List<Userinfo>list = userinfoDao.totalAll(u);
return list.size();
}
@Override
public Integer update(Userinfo u) {
// TODO Auto-generated method stub
return userinfoDao.add(u);
}
@Override
public Integer edit(Userinfo u) {
// TODO Auto-generated method stub
return userinfoDao.edit(u);
}
@Override
public Integer delete(Integer id) {
// TODO Auto-generated method stub
return userinfoDao.delete(id);
}
}


oracle_drivername=oracle.jdbc.driver.OracleDriver
oracle_url=jdbc:oracle:thin:@localhost:1521:orcl
oracle_username=X
oracle_password=sshcPwd


log4j.rootLogger=DEBUG,Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d[%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"??
? ? "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>??
? ? <typeAliases>
? ? ? ? <package name="com.SSHC.bean"/>
? ? </typeAliases>
</configuration>


$(function(){
var oTable = new TableInit();
oTable.init();
//給查詢按鈕綁定點擊事件
$('#btn_query').click(function(){
//刷新表格(會進行分頁)
$("#tb_userinfo").bootstrapTable('refresh');
});
//給新增按鈕綁定事件
$('#btn_add').click(function(){
//清空表單
clrForm();
//彈出新增界面
$('#win').modal('show');
});
//給表單的提交按鈕綁定點擊事件
$('#btn_submit').click(function(){
//根據(jù)id判斷是進行新增還是修改
var id = $('#f_id').val();//id
var url = '';
if(id) {//如果id不為空,就是做修改
url = 'edit';
} else {//否則就是做新增
url = 'add';
}
//獲取表單中的輸入值
var act = $('#f_act').val();//賬號
var p = $('#f_pwd').val();//密碼
var p1 = $('#f_cpwd').val();//確認密碼
var b = $('#f_birth').val();//生日
if(p === p1) {//如果兩次輸入的密碼一致,就可以提交表單中的數(shù)據(jù)
$.ajax({
url: url,
type: 'POST',
dataType: 'JSON',
data: {
id: id,
act: act,
pwd: p,
birth: b
},
success: function(data){
var count = data.ct;
if(count > 0) {
//隱藏窗體
$('#win').modal('hide');
//刷新表格
$("#tb_userinfo").bootstrapTable('refresh');
}
}
});
} else {
alert('兩次輸入的密碼不一致');
}
});
//給修改按鈕綁定事件
$('#btn_edit').click(function(){
//清空表單
clrForm();
//判斷是否選中了一行
var rows = $("#tb_userinfo").bootstrapTable('getSelections');
if(rows.length === 1) {
//獲取數(shù)據(jù)
var id = rows[0].id;
var act = rows[0].act;
var birth = rows[0].birth;
$('#f_id').val(id);
$('#f_act').val(act);
$('#f_birth').val(birth);
//顯示彈出窗體
$('#win').modal('show');
} else {
alert('請選擇一條記錄進行修改');
}
});
//給刪除按鈕綁定事件
$('#btn_delete').click(function(){
//判斷是否選中了一行
var rows = $("#tb_userinfo").bootstrapTable('getSelections');
if(rows.length === 1) {
//獲取選中記錄的id
var id = rows[0].id;
//提交ajax請求進行刪除
$.ajax({
url: 'del',
type: 'POST',
dataType: 'JSON',
data: {
id: id
},
success: function(data){
var count = data.ct;
if(count > 0) {
//刷新表格
$("#tb_userinfo").bootstrapTable('refresh');
}
}
});
} else {
alert('請選擇一條記錄進行刪除');
}
});
})
function clrForm(){
$('#f_id').val('');
$('#f_act').val('');
$('#f_pwd').val('');
$('#f_cpwd').val('');
$('#f_birth').val('');
}
var TableInit = function(){
var objTable = {};
//定義表格的初始化的方法
objTable.init = function(){
$('#tb_userinfo').bootstrapTable({
url: 'ld', //請求后臺的URL(*)
method: 'get', //請求方式(*)
contentType: "application/x-www-form-urlencoded",
dataType:'json',//返回的數(shù)據(jù)類型必須是json對象
toolbar: '#toolbar', //工具按鈕用哪個容器
striped: true, //是否顯示行間隔色
cache: false, //是否使用緩存,默認為true,所以一般情況下需要設(shè)置一下這個屬性(*)
pagination: true, //是否顯示分頁(*)
sortable: false, //是否啟用排序
sortOrder: "asc", //排序方式,asc是升序,desc是降序
queryParams: function(params) {
//獲取查詢輸入的條件
var act = $('#s_act').val();
var startBirth = $('#s_birth_start').val();
var endBirth = $('#s_birth_end').val();
? ? ? ? var temp = { //這里的鍵的名字和控制器的變量名必須一致,這邊改動,控制器也需要改成一樣的
? ? ? ? rows: params.limit, //頁面大小
? ? ? ? page: (params.offset / params.limit) + 1, //頁碼
? ? ? ? act: act,
? ? ? ? sbirth: startBirth,
? ? ? ? ebirth: endBirth
? ? ? ? };
? ? ? ? return temp;
? ? ? ? }, //傳遞參數(shù)的方法(*)
sidePagination: "server", //分頁方式:client客戶端分頁,server服務(wù)端分頁(*)
pageNumber: 1, //初始化加載第一頁,默認第一頁
pageSize: 5, //每頁的記錄行數(shù)(*)
pageList: [2, 3, 5, 10], //可供選擇的每頁的行數(shù)(*)
search: true, //是否顯示表格搜索,此搜索是客戶端搜索,不會進服務(wù)端,所以,個人感覺意義不大
strictSearch: true,
showColumns: true, //是否顯示所有的列
showRefresh: true, //是否顯示刷新按鈕
minimumCountColumns: 2, //最少允許的列數(shù)
clickToSelect: true, //是否啟用點擊選中行
height: 700, //行高,如果沒有設(shè)置height屬性,表格自動根據(jù)記錄條數(shù)覺得表格高度
uniqueId: "ID", //每一行的唯一標(biāo)識,一般為主鍵列
showToggle: true, //是否顯示詳細視圖和列表視圖的切換按鈕
cardView: false, //是否顯示詳細視圖
detailView: false, //是否顯示父子表
onClickRow: function (row) {//點擊表格中的某一行時觸發(fā)這個函數(shù)
console.log(row);
? ? ? ? ? ? },
columns: [{
checkbox: true
}, {
field: 'id',
title: '編號'
}, {
field: 'act',
title: '賬號'
}, {
field: 'birth',
title: '生日'
}
, {
field: 'pwd',
title: '密碼'
}]
});
}
return objTable;
}


<?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:mvc="http://www.springframework.org/schema/mvc"
? ? xmlns:tx="http://www.springframework.org/schema/tx"
? ? xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
? ? ? ? http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
? ? ? ? http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
? ? ? ? http://www.springframework.org/schema/tx?
? ? ? ? http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
? ? <!-- 配置掃描注解,不掃描帶有@Controller注解的類 -->
? ? <context:component-scan base-package="com.SSHC">
? ? ? ? <context:exclude-filter type="annotation"
? ? ? ? ? ? expression="org.springframework.stereotype.Controller" />
? ? </context:component-scan>
? ? <!-- 引入db.properties文件 -->
? ? <bean id="propertyConfigurer"?
? ? ? ? class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
? ? ? ? <property name="location" value="classpath:db.properties"/>
? ? </bean>
? ? <!--數(shù)據(jù)庫連接池配置-->
? ? <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"?
? ? ? ? destroy-method="close">??
? ? ? ? <property name="driverClassName" value="${oracle_drivername}"/>
? ? ? ? <property name="url" value="${oracle_url}"/>
? ? ? ? <property name="username" value="${oracle_username}"/>
? ? ? ? <property name="password" value="${oracle_password}"/>
? ? </bean>
? ? <!-- 創(chuàng)建sqlSessionFactory對象 -->
? ? <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
? ? ? ? <!-- 指定數(shù)據(jù)源 -->
? ? ? ? <property name="dataSource" ref="dataSource"/>
? ? ? ? <!-- 指定mybatis框架主配置文件的位置 -->
? ? ? ? <property name="configLocation" value="classpath:mybatis.xml"/>
? ? ? ? <!-- 自動掃描mapping.xml文件,**表示迭代查找 ,,也可在mybatis.xml中單獨指定xml文件 -->
? ? ? ? <property name="mapperLocations" value="classpath:com/SSHC/dao/*.xml"/>
? ? </bean>?
? ? <!-- 自動掃描com/SSHC/dao下的所有dao接口,并實現(xiàn)這些接口,
? ? ? ? ? ? ? ? ?可直接在程序中使用dao接口,不用再獲取sqlsession對象 -->
? ? <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
? ? ? ? <!-- basePackage 屬性是映射器接口文件的包路徑。
? ? ? ? ? ? ? ? ? ? ? ? 你可以使用分號或逗號 作為分隔符設(shè)置多于一個的包路徑-->
? ? ? ? <property name="basePackage" value="com/SSHC/dao"/>
? ? ? ? <!-- 因為會自動裝配 SqlSessionFactory和SqlSessionTemplate
? ? ? ? ? ? ? ? ? ? ? ? 所以沒有必要去指定SqlSessionFactory或 SqlSessionTemplate
? ? ? ? ? ? ? ? ? ? ? ? 因此可省略不配置;
? ? ? ? ? ? ? ? ? ? ? ? 但是,如果你使用了一個以上的 DataSource,那么自動裝配可能會失效。
? ? ? ? ? ? ? ? ? ? ? ? 這種情況下,你可以使用sqlSessionFactoryBeanName或sqlSessionTemplateBeanName屬性
? ? ? ? ? ? ? ? ? ? ? ? 來設(shè)置正確的 bean名稱來使用 -->
? ? ? ? ?<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
? ? </bean>
? ? <!-- 配置事務(wù)管理器 -->
? ? <bean id="transactionManager"
? ? ? ? class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
? ? ? ? <property name="dataSource" ref="dataSource" />
? ? </bean>
? ? <!--? 使用聲明式事務(wù) transaction-manager:引用上面定義的事務(wù)管理器 -->
? ? <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>


? ? <body>
? ? ? ? <div class="panel-body" style="padding-bottom:0px;">
? ? ? ? ? ? <!-- 查詢面板 -->
<div class="panel panel-default">
<div class="panel-heading">查詢條件</div>
<div class="panel-body">
<form id="formSearch" class="form-horizontal">
<div class="form-group" style="margin-top:15px">
<label class="control-label col-sm-1" for="s_act">賬號</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="s_act">
</div>
<label class="control-label col-sm-1" for="s_birth">生日起始</label>
<div class="col-sm-2">
<input type="date" class="form-control" id="s_birth_start">
</div>
<label class="control-label col-sm-1" for="s_birth">到</label>
<div class="col-sm-2">
<input type="date" class="form-control" id="s_birth_end">
</div>
<div class="col-sm-3" style="text-align:left;">
<button type="button" style="margin-left:50px" id="btn_query" class="btn btn-primary">查詢</button>
</div>
</div>
</form>
</div>
</div>
? ? ? ? ? ? <!-- 表格上方的工具欄 -->
<div id="toolbar" class="btn-group">
<button id="btn_add" type="button" class="btn btn-default">
? ? ? ? ? ? ? ? ? ? <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增
? ? ? ? ? ? ? ? </button>
<button id="btn_edit" type="button" class="btn btn-default">
? ? ? ? ? ? ? ? ? ? <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改
? ? ? ? ? ? ? ? </button>
<button id="btn_delete" type="button" class="btn btn-default">
? ? ? ? ? ? ? ? ? ? <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>刪除
? ? ? ? ? ? ? ? </button>
</div>
<!-- 數(shù)據(jù)展示 -->
<table id="tb_userinfo"></table>
</div>
<!-- 彈出窗體 -->
<div class="modal fade" id="win" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
? ? <div class="modal-header">
? ? ? ? ? ? <button type="button" class="close" data-dismiss="modal"?
? ? ? ? ? ? ? ? aria-hidden="true">×</button>
? ? ? ? ? ? <h4 class="modal-title">模塊管理</h4>
? ? ? ? </div>
? ? ? ? <div class="modal-body">
? ? ? ? ? ? <form id="formSearch" class="form-horizontal">
? ? ? ? ? ? <input type="hidden" id="f_id" />
? ? ? ? ? ? <div class="form-group">
? ? <input type="text" class="form-control" id="f_act"?
? ? ? ? placeholder="賬號">
</div>?
<div class="form-group">
? ? <input type="password" class="form-control" id="f_pwd"?
? ? ? ? placeholder="密碼" />
? ? <input type="password" class="form-control" id="f_cpwd"?
? ? ? ? placeholder="確認密碼" />
</div>?
<div class="form-group">
? ? <input type="text" class="form-control" id="f_birth"?
? ? ? ? placeholder="生日">
</div>?
</form>? ? ? ??
? ? ? ? </div>
? ? ? ? <div class="modal-footer">
? ? ? ? ? ? <button type="button" class="btn btn-default" data-dismiss="modal">關(guān)閉</button>
? ? ? ? ? ? <button id="btn_submit" type="button" class="btn btn-primary">提交</button>
? ? ? ? </div>
</div>
</div>
</div>
? ? </body>
</html>


?<style type="text/css">
? ? ? ? ? ? *{
? ? ? ? ? ? ? ? font-size: 50px;
? ? ? ? ? ? }
? ? ? ? </style>
? ? </head>
? ? <body>
? ? ? ? <form action="RequestMappingLogin" method="post">
? ? ? ? ? ? <label>賬號:</label><input type="text" name="act"/>
? ? ? ? ? ? <br>
? ? ? ? ? ? <label>密碼:</label><input type="password" name="pwd"/>
? ? ? ? ? ? <br>
? ? ? ? ? ? <input type="submit" value="登錄" />
? ? ? ? </form>
? ? ? ? <div>${msg }</div>
? ? </body>
</html>


<?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:mvc="http://www.springframework.org/schema/mvc"
? ? xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
? ? ? ? http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
? ? ? ? http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">? ? ? ? ? ? ? ? ? ? ? ?
? ? <!-- 掃描@Controller注解 -->
? ? <context:component-scan base-package="com.SSHC.controller">
? ? ? ? <context:include-filter type="annotation"
? ? ? ? ? ? expression="org.springframework.stereotype.Controller" />
? ? </context:component-scan>
? ? <!-- 默認注冊RequestMappingHandlerMapping和RequestMappingHandlerAdapter類 -->
? ? <mvc:annotation-driven />
? ? <!-- jsp引用外部js,css等靜態(tài)資源的解決方法(和上面的標(biāo)簽必須同時出現(xiàn),否則無法訪問url) -->
? ? <mvc:default-servlet-handler />
? ? <!-- 配置視圖名稱解析器 -->
? ? <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"?
? ? ? ? ? ? id="internalResourceViewResolver">
? ? ? ? <!-- 前綴 -->
? ? ? ? <!-- 將所有的jsp文件存放在/WEB-INF/my/目錄下 -->
? ? ? ? <property name="prefix" value="/WEB-INF/" />
? ? ? ? <!-- 后綴 -->
? ? ? ? <property name="suffix" value=".jsp" />
? ? ? ? <!-- 優(yōu)先級設(shè)定 -->
? ? ? ? <property name="order" value="10"></property>
? ? </bean>?
? ? <!-- http://localhost:8080/Ssmbootstrap2/toLogin -->
? ? <mvc:view-controller path="/toLogin" view-name="login"/>?
</beans>


<?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_3_0.xsd" id="WebApp_ID" version="3.0">
? <display-name>Ssmbootstrap2</display-name>
? <!-- springcore框架配置 -->
? <listener>
? ? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
? </listener>
? <!-- controller中文亂碼處理,注意一點:要配置在所有過濾器的前面 -->
? <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>
? <!-- springmvc框架配置 -->
? <servlet>
? ? ? <servlet-name>springmvc</servlet-name>
? ? ? <servlet-class>
? ? ? ? ? org.springframework.web.servlet.DispatcherServlet
? ? ? </servlet-class>
? ? ? <load-on-startup>1</load-on-startup>
? </servlet>
? <servlet-mapping>
? ? ? <servlet-name>springmvc</servlet-name>
? ? ? <url-pattern>/</url-pattern>
? </servlet-mapping>
? <welcome-file-list>
? ? <welcome-file>index.html</welcome-file>
? ? <welcome-file>index.htm</welcome-file>
? ? <welcome-file>index.jsp</welcome-file>
? ? <welcome-file>default.html</welcome-file>
? ? <welcome-file>default.htm</welcome-file>
? ? <welcome-file>default.jsp</welcome-file>
? </welcome-file-list>
</web-app>

具體代碼例子 END

https://v4.bootcss.com/docs/content/reboot/

