热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java基于StrutsMybatismaven项目笔记

集成开发软件:eclipse使用技术:Struts2Mybatismavenjqeryjs数据持久化工具:Oracle数据库创建ma

 

集成开发软件:eclipse 

使用技术:Struts2 Mybatis maven jqery js

数据持久化工具:Oracle数据库

创建maven项目搭建开发环境

引入所需依赖jar包

junitjunit3.8.1testjavax.servletjavax.servlet-api3.1.0provided
org.apache.strutsstruts2-core2.3.16
org.apache.struts.xworkxwork-core2.3.16
log4jlog4j1.2.17


org.projectlomboklombok1.16.20provided

org.mybatismybatis3.2.2


ojdbcojdbc14

patchcapatchca0.5.0

jstljstl1.2

javax.servlet.jspjavax.servlet.jsp-api2.2.1provided

com.github.pagehelperpagehelper5.1.2


com.alipay.sdkalipay-sdk-java3.7.4.ALL


javax.mailmail1.4

配置web.xml3.0版本


loginFiltercom.huhuya.zyh.interceptor.LoginFilterloginFilter/back/main/*/back/book/*/back/category/*/back/order/*/back/user/*struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*

配置mybatis-config.xml




配置jdbc.properties 原理是类似于key value赋值 设置连接数据库的属性名字以及值

oracle.driver=oracle.jdbc.OracleDriver
oracle.url=jdbc:oracle:thin:@localhost:1521:xe
oracle.username=hr
oracle.password=1234

配置struts.xml配置文件 此处使用包含其他struts配置文件



举例其他模块的struts.xml配置文件




/back/main/main.jsp/back/login.jsp/front/user/register_form.jsp/front/user/login_form.jsp/front/user/register_ok.jsp/front/user/verify_form.jsp/categorycategory_clientShowAll/addressfindAllAddress

配置Mapper.xml文件




问题1&#xff1a;如果是2.3版本 不能使用El表达式 需要在jsp头部引入  isELIgnored&#61;"false"解决方案&#xff1a;①修改web.xml版本为2.4 / 2.5 / 3.0 当修改为2.3以上版本时,可以在页面中直接使用el表达式②在jsp页面中添加el表达式的显示支持 isELIgnored&#61;"false"例 &#xff1a;<%&#64; page language&#61;"java" import&#61;"java.util.*" pageEncoding&#61;"utf-8"  isELIgnored&#61;"false" %>2.3版本的jsp页面是不支持这个属性提示的,报黄线属于正常这时虽然可以使用el表达式,但与c标签结合使用时,会出现如下异常According to TLD or attribute directive in tag file, attribute items does not accept any expressions
查阅资料,貌似是c标签在2.3下不能与el一起使用解决方案&#xff1a;使用c标签的扩展库/c-rt/WEB-INF/c-rt.tld上面的代码是在web.xml中配置的,当然你也可以直接在jsp页面中配置<%&#64; taglib uri&#61;"/WEB-INF/c-rt.tld"  prefix&#61;"c"%>  或<%&#64; taglib uri&#61;http://java.sun.com/jstl/core_rt prefix&#61;"c"%>这样就可以在c标签中使用el表达式了


 

问题2&#xff1a;搭建环境时注意jar版本不兼容问题 例如ojdbc需要自己手动引入新建maven项目时需要切换jdk版本生成maven项目目录结构

 

写后台登陆时需要注意的问题

1&#xff1a;jqery实现表单非空以及格式验证

$(function(){var usn &#61; false;//验证账号名 通过id取值$("#txtUsername").blur(function(){var username &#61; $(this).val();var reg&#61;/^[a-zA-Z0-9]{3,20}$/;if(username&#61;&#61;""){$("#nameMsg").html("账号不能为空");usn &#61; false;}else if(!reg.test(username)){ $("#nameMsg").html("用户名为3-20位");usn &#61; false;}else{$("#nameMsg").html("√");usn &#61; true;}});//验证密码//通过id取值$("#txtPassword").blur(function(){var password &#61; $(this).val();var reg&#61;/^[a-zA-Z0-9]{3,20}$/;if(password&#61;&#61;""){$("#passMsg").html("密码不能为空");usn &#61; false;}else if(!reg.test(password)){ $("#passMsg").html("密码为3-20位");usn &#61; false;}else{ $("#passMsg").html("√");usn &#61; true;}});//验证from表单提交直接点击提交的时候验证所有的方法验证$("form").submit(function(){//将所有input框中的blur事件都执行一遍$("input").trigger("blur");if(!usn){return false;}});});

2&#xff1a;验证码异步刷新

首先在验证码刷新路径上定义一个点击事件
换张图 也可以设置一个点击事件onClick&#61;"changeImage()" 点击图片的时候也会刷新写jqery代码//点击更换验证码function changeImage(){$("#imgVcode").attr("src","${pageContext.request.contextPath}/user/code?a&#61;"&#43;new Date().getTime());}

写后台类别的时候需要注意

1&#xff1a;写sql语句的时候写requestMap映射的时候注意id冲突问题

2&#xff1a;表关联查询

 

requestMap的书写  

注意&#xff1a;如果需要关联表的值就写requestMap 如果不需要可以不写

左外关联on所连接的条件一定要在map中写出来不然也会出现问题

Mabatis中如果Mapper文件中做map映射的时候出现了错误其他的功能也会受其影响&#xff0c;因为

程序运行顺序为先运行web.xml,web.xml中写的有struts过滤器&#xff0c;会扫描struts 

当链接数据库是会执行maybatis-config.xml文件 此文件做的mapper文件映射

这个时候会检查出来其他的mapper文件中的错误&#xff0c;会乱报异常

 

3&#xff1a;select下拉框的动态显示以及回显&#xff0c;

动态展示需要去数据库中查询&#xff0c;然后从作用域中取出


                        
                        
                            
                            

                            
                            

                        
                    

后台已经没什么问题了 下面就是前台

 

前台

1&#xff1a;展示所有的商品以及各种不同展示涉及问题如下

 

sql语句随机查询2条数据

sql语句降序升序

ORDER BY 语句用于根据指定的列对结果集进行排序。ORDER BY 语句默认按照升序对记录进行排序。如果您希望按照降序对记录进行排序&#xff0c;可以使用 DESC 关键字。代码&#xff1a;
以字母顺序显示公司名称&#xff1a;
SELECT Company, OrderNumber FROM Orders ORDER BY Company以字母顺序显示公司名称&#xff08;Company&#xff09;&#xff0c;并以数字顺序显示顺序号&#xff08;OrderNumber&#xff09;&#xff1a;
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber以逆字母顺序显示公司名称&#xff1a;
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

 

分页&#xff1a;

 

 

//生成6位随机数字的方法System.out.println((int)((Math.random()*9&#43;1)*100000));//生成5位随机数字System.out.println((int)((Math.random()*9&#43;1)*10000));//生成4位随机数字System.out.println((int)((Math.random()*9&#43;1)*1000));//生成3位随机数字System.out.println((int)((Math.random()*9&#43;1)*100));//生成2位随机数字System.out.println((int)((Math.random()*9&#43;1)*10));//生成1位随机数字System.out.println((int)((Math.random()*9&#43;1)));

mybatis提供的分页查询工具使用步骤&#xff1a;1&#xff1a;导入jar包 pagehelper 引入到项目中2&#xff1a;在mybatis-config中配置 插件拦截器注意&#xff1a;位置不能放错The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,databaseIdProvider?,mappers?)"以上是标签书写顺序3&#xff1a;     注意action的使用Page startPage &#61; PageHelper.startPage(pageNum, 3);查询语句的sql必须写的result的上面bookService.findAllFirstAndScondeBook(category.getId());List result &#61; startPage.getResult();List list1 &#61; bookService.findAllFirstAndScondeBook(category.getId());int count&#61;list1.size();获取一共是多少页pageCount&#61;count%3&#61;&#61;0?count/3:(count/3)&#43;1;request.setAttribute("list",result);

购物车思路&#xff1a;存购物车的两种方式&#xff1a;
1&#xff1a;Map> 这样的好处是后面存订单的时候&#xff0c;
可以直接从购物车中直接获取&#xff0c;很方便&#xff0c;建议使用
2&#xff1a;Map
这种也挺好的 就是在存订单的时候有点不方便
实现逻辑&#xff1a;我只实现其中一种//查询商品信息List list &#61; bookService.findBookById(book);Map map&#61;(Map) session.getAttribute("cart");//获取商品对象book&#61;list.get(0);//判断购物车是否为空if(map&#61;&#61;null) {System.out.println("为空");//为空创建购物车map&#61;new HashMap();map.put(book,1);session.setAttribute("cart",map);}else {//遍历mapfor(Book book1:map.keySet()){;//判断此商品是否已经存在if(book.getId()&#61;&#61;book1.getId()){System.out.println("加一");//如果存在上商品数量加一map.put(book1,map.get(book1)&#43;1);session.setAttribute("cart",map);System.out.println(map.get(book1));}else {//如果不存在直接存进购物车map.put(book,1);session.setAttribute("cart",map);}}
}//算出商品总价存进作用域Set k1&#61;map.keySet();for(Book book1:k1){Integer num &#61;map.get(book1);sum&#43;&#61;book1.getPrice()*num;sum1&#43;&#61;book1.getDiscountPrice()*num;sum2&#61;sum-sum1;session.setAttribute("sum",sum1);request.setAttribute("sum2",sum2);}return "cart";
}

jquery点击事件实现路径的跳转
function change(bookId){/* 控制台打印 */console.log(bookId);var num &#61; $("#"&#43;bookId).val();var reg&#61;/^[0-9]*[1-9][0-9]*$/; if(!reg.test(num-0)){ alert("此处必须为数字");}else{
location.href&#61;"${pageContext.request.contextPath }/shop/shop_modifyCart?book.id&#61;"&#43;bookId&#43;"&num&#61;"&#43;num;} }jsp页面代码
变更

邮箱和alipay的使用

此次项目完成用了八天
我自己的问题主要在于js 以及jqery 比较弱其他功能实现基本没什么问题
主要是表单验证以及jquery代码比较浪费时间 需要加强练习
收获&#xff1a;对表单验证jquery代码有了更深的理解


 


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • java日志框架详解
    Java日志框架详解1.常用日志框架1.1Java常用日志框架类别1.2Java常用日志框架历史1.3两大日志接口阵营1.3.1基于CommonsLogging接口实现的常用日志框 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
author-avatar
Lcy榆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有