SSM项目总结

SSM项目总结SSM项目总结(基于Maven工程)1、如何访问WEB-INF下的页面2、AJAX接收不到return的值3、AJAX内跳转页面4、form表单提交数据5、将登录用户信息存在session中6、将session中数据销毁7、MD5加密8、生成指定位数的随机数9、拦截器10、c:forEach11、分页查询12、onclick事件1、如何访问WEB-INF下的页面<%request.getRequestDispatcher(“/WEB-INF/views/home/login1.jsp”).f

大家好,又见面了,我是你们的朋友全栈君。

1、如何访问WEB-INF下的页面

 <% request.getRequestDispatcher("/WEB-INF/views/home/login1.jsp").forward(request, response); %>

2、session

将登录用户信息存在session中

session.setAttribute("account_session", account);

将session中数据销毁

session.removeAttribute("account_session");

获取session中的数据

${ 
   sessionScope.account_session.user.username}

3、AJAX

AJAX内跳转页面

window.location.href = "index"

4、数据提交

form表单

<form action="index.html">	
</form>	

ajax

   $.ajax({ 
   
              url: "insertUser",
               type: "post",
               dataType: "json",
               data:{ 
   
            	   "username":add_username,
               }
           });

5、onclick 事件

<script type="text/javascript">
   function save(){ 
   
       if(confirm('是否确认?')){ 
   
           $.ajax({ 
   
              url: "insertUser",
               type: "post",
               dataType: "json",
               data:{ 
   
            	   "username":add_username,
               },
               success:function(result){ 
   
                   if(result.code == 100){ 
   
                	   alert("成功!!!");
                   } else { 
   
                	   alert("失败");
                   }
               }
           });
       }
   }
   </script>

6、html

下拉列表

<select id = "add_sex" > 
	<option value ="1"></option> 
	<option value ="2"></option>                       
</select> 

7、拦截器

 @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception { 
   
        Account account = (Account) request.getSession().getAttribute("account_session");
        if(account!=null) { 
   
            // 登录成功不拦截
            return true;
        }else { 
   
            // 拦截后进入登录页面
            request.getRequestDispatcher("/WEB-INF/views/home/login.jsp").forward(request, response);
            return false;
        }
    }

dispatcherServlet-servlet.xml文件

<mvc:interceptors>
        <mvc:interceptor>   
            <mvc:mapping path="/**"/>           
            <mvc:exclude-mapping path="/home/index" />
            <mvc:exclude-mapping path="/indexSecond" />
            <mvc:exclude-mapping path="/static/**" />
            <bean class="com.lv.interceptor.LoginInterceptor"></bean>                     
        </mvc:interceptor>
    </mvc:interceptors>

8、c:forEach

// 查询所有用户
    @RequestMapping(value ="/AccountList",method = RequestMethod.GET) 
    public String getAccountsList(@RequestParam(value = "pn",defaultValue = "1")Integer pn,Model model) { 
   
         PageHelper.startPage(pn,5);
         //startPage后面紧跟这个查询就是一个分页查询
         List<Account> list = accountService.getAll();
         //使用PageInfo包装查询后的结果,只需要将PageInfo交给页面就可以了
         PageInfo page = new PageInfo(list,5);
         model.addAttribute("pageInfo", page);  
         return "account/list";
     }
<%@taglib  prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${pageInfo.list}" var="account">
	<tr>
		<td>${ 
   account.id}</td>
	</tr>
</c:forEach>

9、分页查询

// 查询所有用户
    @RequestMapping(value ="/AccountList",method = RequestMethod.GET) 
    public String getAccountsList(@RequestParam(value = "pn",defaultValue = "1")Integer pn,Model model) { 
   
         PageHelper.startPage(pn,5);
         //startPage后面紧跟这个查询就是一个分页查询
         List<Account> list = accountService.getAll();
         //使用PageInfo包装查询后的结果,只需要将PageInfo交给页面就可以了
         PageInfo page = new PageInfo(list,5);
         model.addAttribute("pageInfo", page);  
         return "account/list";
     }
<%  pageContext.setAttribute("path", request.getContextPath()); %>
<div class="col-md-6">当前${ 
   pageInfo.pageNum }页,总${ 
   pageInfo.pages }页,总${ 
   pageInfo.total}条记录</div>
<div class="col-md-6">
<nav aria-label="Page navigation">
<ul class="pagination">
<li><a href="${path}/AccountList?pn=1">首页</a></li>
<c:if test="${pageInfo.hasPreviousPage }">
<li><a href="${path}/AccountList?pn=${pageInfo.pageNum - 1}"
aria-label="Previous"> <span aria-hidden="true">&laquo;</span>
</a></li>
</c:if>
<c:forEach items="${pageInfo.navigatepageNums }" var="page_Num">
<c:if test="${page_Num == pageInfo.pageNum }">
<li class="active"><a href="#">${ 
page_Num }</a></li>
</c:if>
<c:if test="${page_Num != pageInfo.pageNum }">
<li><a href="${path}/AccountList?pn=${page_Num}">${ 
page_Num }</a></li>
</c:if>
</c:forEach>
<c:if test="${pageInfo.hasNextPage }">
<li><a href="${path}/AccountList?pn=${pageInfo.pageNum + 1}"
aria-label="Previous"> <span aria-hidden="true">&raquo;</span>
</a></li>
</c:if>
<li><a href="${path}/AccountList?pn=${pageInfo.pages}">末页</a></li>
</ul>
</nav>
</div>

10、SpringMVC中form标签

  // 显示用户详细信息
@RequestMapping(value ="/getAccount/{id}",method = RequestMethod.GET) 
public String getAccounts(@PathVariable("id") Integer id,Map<String,Object> map) { 

map.put("account", accountService.selectAccountByPrimaryKey(id));
return "account/userInformation";
}
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>  
<form:form action="${pageContext.request.contextPath}/getAccount" method="get" modelAttribute="account">
账        户 :<form:input path="accountNumber" readonly="true"/><br>
</form:form>

11、工具

MD5加密

public class MD5Util { 

public static String getMD5Str(String str) { 

byte[] digest = null;
try { 

MessageDigest md5 = MessageDigest.getInstance("md5");
digest  = md5.digest(str.getBytes("utf-8"));
} catch (NoSuchAlgorithmException e) { 

e.printStackTrace();
} catch (UnsupportedEncodingException e) { 

e.printStackTrace();
}
//16是表示转换为16进制数
String md5Str = new BigInteger(1, digest).toString(16);
return md5Str;
}
}

生成指定位数的随机数

public class NumberGenerator { 

//随机数工具方法
public static long getNumber(int length) { 

StringBuilder buf = new StringBuilder();
Random random = new Random();
/*开头不为0,建议数据量较少时只放开部分,比如1至3开头的数,等业务达到一定数量时,再逐步放开剩余的号码段,由于是固定位数,总数量一定,生成的数越多,重复的几率越大**/
int firstNumber = random.nextInt(9) + 1; 
buf.append(firstNumber);
for(int i = 0; i < length - 1; ++i) { 

buf.append(random.nextInt(10));
}
return Long.valueOf(buf.toString());
}
}

生成系统时间

public class TimeSystem { 
    
static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
public static String timeSystem = df.format(new Date());//new Date()为获取当前系统时间 
}

Msg

public class Msg { 

//状态码 100-成功 200-失败
private int code;
private String msg;
//用户返回给浏览器的数据
private Map<String,Object> extend = new HashMap<String,Object>();
public int getCode() { 

return code;
}
public void setCode(int code) { 

this.code = code;
}
public String getMsg() { 

return msg;
}
public void setMsg(String msg) { 

this.msg = msg;
}
public Map<String, Object> getExtend() { 

return extend;
}
public void setExtend(Map<String, Object> extend) { 

this.extend = extend;
}
public static Msg success() { 

Msg result = new Msg();
result.setCode(100);
result.setMsg("处理成功");
return result;
}
public static Msg fail() { 

Msg result = new Msg();
result.setCode(200);
result.setMsg("处理失败");
return result;
}
public Msg add(String key,Object value) { 

this.getExtend().put(key, value);
return this;        
}
}

ps:本文借鉴了网上大佬们的博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148614.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 2022考研数学一考试大纲最新_数学一考研大纲2021官方

    2022考研数学一考试大纲最新_数学一考研大纲2021官方2022年考研数学1考试大纲(2022年)

  • 本地Web服务器搭建[通俗易懂]

    本地Web服务器搭建[通俗易懂]1.Dreamweaver->新建站点->站点名称+本地站点文件夹->保存2.IE->Internet选项->安全标签->自定义级别(安全设置对话框)->启用“通过域访问数据源”->确定3.将webs.exe(WebServer)放至脚本根目录上一级目录,运行webs.exe4.启动浏览器输入IP地址:127.0.0.1即可访问本地的We

  • python列表添加元素的方法_列表添加元素的三种方法

    python列表添加元素的方法_列表添加元素的三种方法欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗Ctrl+B斜体Ctrl+I引用Ctrl

    2022年10月23日
  • 进销存excel_用Excel制作简单的进销存系统「建议收藏」

    进销存excel_用Excel制作简单的进销存系统「建议收藏」最近刚好帮一个朋友做一个进销存系统,因为使用者对电脑操作以及Excel应用能力较弱,我做的进销存系统没有用特别复杂的功能,非常有解决意义,我将手把手将你制作一个简单的进销存系统。需求描述朋友找人合伙开了一个女装店,想要用Excel记录每天的销售数据、定期的进货数据,以及定期盘点库存情况。朋友的合伙人对电脑操作、Excel数据管理能力较弱,前期购买过专用的进销存软件,但是经常会把数据搞乱,因此放弃了…

  • struts2使用AbstractInterceptor实现拦截器[通俗易懂]

    struts2使用AbstractInterceptor实现拦截器[通俗易懂]2.使用abstractinterceptor抽象类来实现自定义拦截器完成用户是否登陆判断1.写个类继承AbstractInterceptorpublicclassMyintercetorextendsAbstractInterceptor{}2.重写interceptor方法//下列事例是做用户名是否登陆的验证publicStringinterce

  • CentOS 6 命令(九)——磁盘阵列RAID

    CentOS 6 命令(九)——磁盘阵列RAIDmdadm-C/dev/md0-l5-n3/dev/sd[bcd]#创建等级为5的阵列设备md0,由sdb、sdc、sdd组成mdadm-D/dev/md0#查看阵列状态。-D查看状态pvcreate/dev/md0#将虚拟磁盘做成物理卷vgcreatenz2001_vg/dev/md0#创建卷组lvcreate-L1G-nnz2001_lv…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号