当前位置: 首页 > news >正文

网站新闻标题标题怎样进行优化企业服务平台官网入口

网站新闻标题标题怎样进行优化,企业服务平台官网入口,荣盛科技网站建设,北京企业网页[1] 案例需求 用户访问登录页面#xff0c;在页面中输入用户名和密码点击登录#xff0c;登录成功后 进入到主页中。如果登录败#xff0c;则在登录页面中提示用户用户名或密码错误。在主页面中#xff0c;用户在填写银行转账信息#xff0c;包括:转账账户#xff0c;转账…[1] 案例需求 用户访问登录页面在页面中输入用户名和密码点击登录登录成功后 进入到主页中。如果登录败则在登录页面中提示用户用户名或密码错误。在主页面中用户在填写银行转账信息包括:转账账户转账账 户密码转账金额收款账号收款人姓名。点击开始转账完成转账。但是有如下特殊需求: ① 需要用户的登录日志。 ② 当转账账户的密码失去焦点时检验转账账户信息是否存在。 ③在转账金额失去焦点时校验金额是否正确。 ④ 收款人姓名失去焦点时校验收款人信息是否正确 ⑤ 当所有的信息验证无误后才能转账。 [2] 案例页面效果图 ① 登录页面效果图 ② 转账主页面效果图 [3] 功能分析 ① 创建登录页面 ② 用户登录以及登录失败提示语 ③ 登录日志 ④ 创建银行转账页面 ⑤ 转账账户信息校验 ⑥ 金额校验 ⑦ 入账账户信息校验 ⑧ 转账功能 [4] 数据库设计 ① 用户信息表: t_user 字段名 中文名 类型 大小 约束 uid 用户编号 int 10 主键、非空 uname 用户名 varchar 100 非空 pwd 密码 varchar 100 非空 ② 银行账户信息表:t_account 字段名 中文名 类型 大小 约束 aid 账户编号 int 10 主键、非空 apwd 支付密码 varchar 100 非空 money 账户金额 double uid 用户编号 int 10 非空 [5] 功能实现 1. 完成数据库的变现 -- ---------------------------- -- Table structure for t_account -- ---------------------------- DROP TABLE IF EXISTS t_account; CREATE TABLE t_account (aid int(10) NOT NULL AUTO_INCREMENT,apwd varchar(100) NOT NULL,money double DEFAULT NULL,uid int(10) NOT NULL,PRIMARY KEY (aid) ) ENGINEInnoDB AUTO_INCREMENT3 DEFAULT CHARSETutf8;-- ---------------------------- -- Records of t_account -- ---------------------------- INSERT INTO t_account VALUES (1, 123, 10000, 1); INSERT INTO t_account VALUES (2, 456, 10000, 2);-- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS t_user; CREATE TABLE t_user (uid int(10) NOT NULL AUTO_INCREMENT,uname varchar(100) NOT NULL,pwd varchar(100) NOT NULL,PRIMARY KEY (uid) ) ENGINEInnoDB AUTO_INCREMENT3 DEFAULT CHARSETutf8;-- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO t_user VALUES (1, 张三, 123); INSERT INTO t_user VALUES (2, 李四, 456);2. 搭建SpringMybatis项目开发的环境 (1) 创建web项目 (2) 在web-inf下创建lib文件夹并导入整合的jar包 (3) 在src创建MVC的包结构 注意:将表的实体类文件创建 (4) 在src下创建spring的配置文件 (5) 在web.xml文件中配置Spring文件路径和监听器 3. 创建登录页面 效果图: 代码示例: %String path request.getContextPath();String basePath request.getScheme() :// request.getServerName() : request.getServerPort() path /; % % page contentTypetext/html;charsetUTF-8 languagejava % html headbase href%basePath %/titleTitle/title /head bodyh3 aligncenter欢迎登录502班级银行转账系统/h3hrdiv stylewidth: 400px;margin: autoform actionuserLogin methodposttable stylemargin: auto;margin-top: 30px; cellpadding10pxtrtd用户名:/tdtdinput typetext nameuname value/td/trtrtd密码:/tdtdinput typepassword namepwd value/td/trtrtd colspan2input typesubmit value点击登录/td/tr/table/form/div /body /html4. 完成登录功能 (1) 创建UserServlet处理登录请求 package com.java.controller; import com.java.pojo.User; import com.java.service.UserService; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;WebServlet(value /userLogin,loadOnStartup 1) public class UserServlet extends HttpServlet {//声明init方法完成Spring资源的初始化加载private UserService us;Overridepublic void init() throws ServletException {//获取Spring容器对象ApplicationContext ac WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());//获取业务层对象us (UserService) ac.getBean(us);}//声明service方法完成请求的处理Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求编码格式req.setCharacterEncoding(utf-8);//设置响应编码格式resp.setContentType(text/html;charsetutf-8);resp.setCharacterEncoding(utf-8);//获取请求信息String unamereq.getParameter(uname);String pwdreq.getParameter(pwd);//处理请求//调用业务层方法根据用户名和密码获取用户信息User user us.userLoginService(uname, pwd);//响应处理结果//获取Session对象HttpSession sessionreq.getSession();//响应if(user!null){//将用户信息存储到session中session.setAttribute(user,user);//重定向到主页面resp.sendRedirect(req.getContextPath()/main.jsp);}else{//增加失败标记session.setAttribute(flag,userFail);//重定向到登录页面resp.sendRedirect(req.getContextPath()/login.jsp);}} }(2) 创建UserService,处理登录请求 package com.java.service.impl; import com.java.mapper.UserMapper; import com.java.pojo.User; import com.java.service.UserService; public class UserServiceImpl implements UserService {//声明mapper层属性private UserMapper userMapper;public UserMapper getUserMapper() {return userMapper;}public void setUserMapper(UserMapper userMapper) {this.userMapper userMapper;}//用户登录Overridepublic User userLoginService(String uname, String pwd) {return userMapper.userLoginMapper(uname,pwd);} }(3) 创建UserMapper根据用户名和密码获取用户信息 package com.java.mapper; import com.java.pojo.User; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; public interface UserMapper {//根据用户名和密码获取用户信息Select(select * from t_user where uname#{uname} and pwd#{pwd})User userLoginMapper(Param(uname) String uname, Param(pwd) String pwd); }(4) 在applicationcontext.xml文件中配置业务层bean !--配置业务层bean--bean idus classcom.bjsxt.service.impl.UserServiceImplproperty nameuserMapper refuserMapper/property/bean5. 创建main.jsp主页面 ① 页面示例图: ② 代码示例: %String path request.getContextPath();String basePath request.getScheme() :// request.getServerName() : request.getServerPort() path /; % % page contentTypetext/html;charsetUTF-8 languagejava % html headbase href%basePath %/titleTitle/title%--引入jquery文件--%script typetext/javascript srcjs/j.js/script%--声明js代码域--%script typetext/javascript//声明页面加载事件$(function () {//创建颜色数组var colors[red,yellow,black,green,gray,blue,brown,darhorchid];//使用间隔执行window.setInterval(function () {//获取0-8的随机整数含0不含8var indexMath.floor(Math.random()*colors.length);//设置标题颜色$(#title).css(color,colors[index]);},100)})/script /head body%--网页的主题--%h3 aligncenter%--跑马灯效果--%marquee width400 behavioralternate directionleft alignmiddlefont colorr idtitle欢迎${sessionScope.user.uname}登录502班级银行转账系统/font/marquee/h3%--水平线--%hr%--银行转账表单--%div stylewidth: 400px;margin: auto;form actiontable stylemargin: auto;margin-top: 30px; cellpadding10pxtrtd转账账户:/tdtdinput typetext nameoutId value/td/trtrtd转账账户密码:/tdtdinput typepassword nameoutPwd value/td/trtrtd金额:/tdtdinput typetext namemoney value/td/trtrtd收款账号:/tdtdinput typetext nameinId value/td/trtrtd收款人姓名:/tdtdinput typetext nameinName value/td/trtrtd colspan2input typesubmit value开始转账/td/tr/table/form/div /body /html6. 完成转账账户信息的校验 (1) 功能点需求: 用户在输入账户以及密码后在密码失去焦点后触发校验。如果正确则在密码框 后显示√错误则显示X. (2) 功能点分析: 通过需求我们发现校验的结果是在当前页面中继续显示的。相当于我们在当前 页面中显示新的响应结果 确定该功能使用ajax技术来实现。 (3) 前台分析: ① ajax请求的触发时机在密码框失去焦点时触发 ② ajax请求的请求地址: Servlet的别名checkAccount ③ ajax请求的请求数据:账户和密码 ④ ajax请求的响应数据:true或者false的字符串 (4) 前台代码实现: //给密码框添加焦点事件完成校验 $(function () {$(#outdPwd).blur(function () {//发起ajax请求$.post(checkAccount,{outId:$(#outId).val(),outPwd:$(#outdPwd).val()methodName”checkOutInfo”},function (data) {if(eval(data)){$(#outSpan).html(√).css(color,green);}else{$(#outSpan).html(X).css(color,red);}})}) })(5) 后台分析: ① 创建Servlet处理转账账户信息校验。checkAccount 注意:有响应”true”,没有响应”false” ② 创建Service处理账户信息校验。 ③ 创建mapper根据账户ID和密码获取账户信息。 (6) 后台代码实现: CheckAccountServlet //声明方法校验转账账户信息private void checkOutInfo(HttpServletRequest req, HttpServletResponse resp) throws IOException {//获取请求信息String outIdreq.getParameter(outId);String outPwdreq.getParameter(outPwd);//处理请求//调用业务层方法Account account checkAccountService.checkOutAccountInfoService(outId, outPwd);//响应结果resp.getWriter().write(account!null?true:false);} CheckAccountService //校验转账账户信息Account checkOutAccountInfoService(String outId,String outPwd); CheckAccountServiceImpl //校验转账账户信息Overridepublic Account checkOutAccountInfoService(String outId, String outPwd) {return checkAccountMapper.checkAccountOutInfoMapper(outId,outPwd);}CheckAccountMapper //校验转账账户信息:根据账户ID和密码获取账户信息Select(select * from t_account where aid#{outId} and apwd#{outPwd})Account checkAccountOutInfoMapper(Param(outId) String outId, Param(outPwd) String outPwd); 7. Servlet的优化 1 问题: 目前我们每实现一个功能点就需要在后台声明一个对应的Servlet进行 请求的处理。这样造成Servlet声明过多代码繁琐。 2 解决: Servlet只声明一个让所有的相关请求都请求该Servlet。 在该Servlet中的service方法中不做具体的请求处理。在Service中根据请求调用对应的逻辑代码来处理请求即可。 类似main方法的机制。 3 实现: 在Servlet中将不同请求的处理逻辑代码封装成对应的逻辑功能方法 然后在service方法中根据请求调用对应的逻辑方法处理请求。每次请求都需要在请求数据中携带要请求的方法的方法名。后台service中 根据请求数据中的方法名调用对应的逻辑方法即可。 package com.java.controller; import com.java.pojo.Account; import com.java.service.CheckAccountService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; WebServlet(value /checkAccount,loadOnStartup 2) public class CheckAccountServlet extends HttpServlet {//声明业务层属性private CheckAccountService checkAccountService;//重写init方法Overridepublic void init() throws ServletException {//获取Spring容器对象ApplicationContext acnew ClassPathXmlApplicationContext(applicationcontext.xml);//获取业务层对象checkAccountService (CheckAccountService) ac.getBean(checkAccountService);}//重写service方法Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求编码格式req.setCharacterEncoding(utf-8);//设置响应编码格式resp.setCharacterEncoding(utf-8);resp.setContentType(text/html;charsetutf-8);//获取请求数据中的方法名String methodNamereq.getParameter(methodName);//根据请求调用对应的逻辑代码if(checkOutInfo.equals(methodName)){checkOutInfo(req,resp);}else if(checkMoneyInfo.equals(methodName)){checkMoneyInfo(req,resp);}else if(checInInfo.equals(methodName)){checInInfo(req,resp);}else if(transferInfo.equals(methodName)){transferInfo(req,resp);}else{System.out.println(没有对应的逻辑方法:methodName);}}//转账private void transferInfo(HttpServletRequest req, HttpServletResponse resp) {}//校验收款人信息private void checInInfo(HttpServletRequest req, HttpServletResponse resp) {}//校验金额private void checkMoneyInfo(HttpServletRequest req, HttpServletResponse resp) {}//声明方法校验转账账户信息private void checkOutInfo(HttpServletRequest req, HttpServletResponse resp) throws IOException {//获取请求信息String outIdreq.getParameter(outId);String outPwdreq.getParameter(outPwd);//处理请求//调用业务层方法Account account checkAccountService.checkOutAccountInfoService(outId, outPwd);//响应结果resp.getWriter().write(account!null?true:false);}}8. 校验金额 (1) 功能点需求: 用户在金额框中输入要转账的金额信息后失去焦点时完成金额信息的校验。 余额足够则在金额框后显示√否则显示X (2) 功能分析: 使用ajax技术。 ① 前台分析 i. 给金额框增加焦点事件 ii. 发起ajax请求 iii. 请求数据为金额转账账户Id后台逻辑方法名 iv. 响应数据为true或者false的字符串 示例代码 /*********************转账金额校验**************************************/ $(function () {$(#money).blur(function () {//发起ajax请求$.post(checkAccount,{outId:$(#outId).val(),money:$(#money).val(),methodName:checkMoneyInfo},function (data) {if(eval(data)){$(#moneySpan).html(√).css(color,green);}else{$(#moneySpan).html(X).css(color,red);}})})})② 后台分析: i. 在CheckAccountServlet中声明金额校验逻辑方法并在service方法完成调用 //校验金额private void checkMoneyInfo(HttpServletRequest req, HttpServletResponse resp) throws IOException {//获取请求数据String outIdreq.getParameter(outId);String money req.getParameter(money);//处理请求Account accountcheckAccountService.checkMoneyInfoService(outId,money);//响应结果resp.getWriter().write(account!null?true:false);} ii. 在CheckAccountService中新增金额校验的业务方法 //校验金额Account checkMoneyInfoService(String outId, String money); //校验金额Overridepublic Account checkMoneyInfoService(String outId, String money) {return checkAccountMapper.checkMoneyInfoMapper(outId,money);}iii. 在CheckAccountMapper中新增金额校验的数据库操作 //校验金额 Select(select * from t_account where aid#{outId} and money#{money}) Account checkMoneyInfoMapper(Param(outId) String outId, Param(money) String money);9. 收款人信息校验 (1) 功能点需求: 用户在收款人姓名失去焦点时校验收款人信息。存在则在收款人姓名框后显示 √不存在则显示X (2) 功能分析 前台分析 i. 给收款人姓名框增加焦点事件 ii. 发起ajax请求完成校验 iii. 请求数据为收款人账户ID收款人姓名后台逻辑方法名 iv. 响应数据 true或者false的字符串 代码示例: /*********************收款人信息校验**************************************/$(function () {$(#inName).blur(function () {//发起ajax请求$.post(checkAccount,{inId:$(#inId).val(),inName:$(#inName).val(),methodName:checInInfo},function (data) {if(eval(data)){$(#inNameSpan).html(√).css(color,green);}else{$(#inNameSpan).html(X).css(color,red);}})})})后台分析 i. 在CheckAccountServlet中声明对应的逻辑方法完成校验 //校验收款人信息private void checInInfo(HttpServletRequest req, HttpServletResponse resp) throws IOException {//获取请求数据String inIdreq.getParameter(inId);String inNamereq.getParameter(inName);//处理请求Account accountcheckAccountService.checkInInfoService(inId,inName);//响应结果resp.getWriter().write(account!null?true:false);} ii. 在CheckAccountService中声明业务方法 //校验收款人信息Account checkInInfoService(String inId, String inName);//校验收款人信息Overridepublic Account checkInInfoService(String inId, String inName) {return checkAccountMapper.checkInInfoMapper(inId,inName);}iii. 在CheckAccountMapper中声明数据库操作 //校验收款人信息Select(select a.* from t_account a join t_user u on a.uidu.uid where a.aid#{inId} and u.uname#{inName})Account checkInInfoMapper(Param(inId) String inId, Param(inName) String inName);10. 开始转账 (1) 功能点需求: 点击开始转账时保证所有的转账信息是正确的如果有错误的转账信息 提示用户请填写正确的信息。如果全部都是正确的则直接发起转账请求完成转账。 (2) 功能分析: ① 前台分析 i. 给转账按钮增加单击事件 ii. 校验转账信息是否全部正确 iii. 提交转账请求 代码示例: /*********************转账账户信息校验**************************************///给密码框添加焦点事件完成校验$(function () {$(#outdPwd).blur(function () {//发起ajax请求$.post(checkAccount,{outId:$(#outId).val(),outPwd:$(#outdPwd).val(),methodName:checkOutInfo},function (data) {if(eval(data)){$(#outSpan).html(√).css(color,green).addClass(success).removeClass(error);}else{$(#outSpan).html(X).css(color,red).addClass(error).removeClass(success);}})})}) /*********************转账金额校验**************************************/$(function () {$(#money).blur(function () {//发起ajax请求$.post(checkAccount,{outId:$(#outId).val(),money:$(#money).val(),methodName:checkMoneyInfo},function (data) {if(eval(data)){$(#moneySpan).html(√).css(color,green).addClass(success).removeClass(error);}else{$(#moneySpan).html(X).css(color,red).addClass(error).removeClass(success);}})})}) /*********************收款人信息校验**************************************/$(function () {$(#inName).blur(function () {//发起ajax请求$.post(checkAccount,{inId:$(#inId).val(),inName:$(#inName).val(),methodName:checInInfo},function (data) {if(eval(data)){$(#inNameSpan).html(√).css(color,green).addClass(success).removeClass(error);}else{$(#inNameSpan).html(X).css(color,red).addClass(error).removeClass(success);}})})}) /*********************转账功能**************************************/$(function () {$(#btn).click(function () {//校验转账信息是否正确if($(.success).length3){//提及表单$(#fm).submit();}else{alert(请填写正确的账户信息)}})})② 后台分析 i. 在CheckAccountServlet中声明转账的逻辑方法 //转账private void transferInfo(HttpServletRequest req, HttpServletResponse resp) throws IOException {//获取请求数据String outIdreq.getParameter(outId);String inIdreq.getParameter(inId);String moneyreq.getParameter(money);//处理请求int icheckAccountService.transferInfoService(outId,inId,money);//响应结果if(i0){resp.sendRedirect(req.getContextPath()/success.jsp);}else{resp.sendRedirect(req.getContextPath()/error.jsp);}} ii. 在CheckAccountService中声明转账的业务方法 //转账功能int transferInfoService(String outId, String inId, String money);//转账功能Overridepublic int transferInfoService(String outId, String inId, String money) {//1.出账int i checkAccountMapper.transferOut(outId, money);//2.入账icheckAccountMapper.transferIn(inId,money);//返回return i;}iii. 在CheckAccountMapper中完成转账的数据库操作 Update(update t_account set moneymoney-#{money} where aid#{outId})int transferOut(Param(outId) String outId,Param(money) String money);//转入Update(update t_account set moneymoney#{money} where aid#{inId})int transferIn(Param(inId) String inId,Param(money) String money);11. 登录日志 (1) 功能点需求: 我们的银行转账功能在刚开始运营的时候并没有用户登录的日志信息的记录。后来某天某个客户他的账号被登录了但是给该客户又不知道是什么时间进行的登录造成调查有困扰怎么办?在当前登录功能的基础上增加登录日志来记 录用户的登录信息。便于我们后期的排查。 (2) 功能分析: 在保留当前登录功能的基础上完成对登录功能的扩展。但是又不希望改变原有的功能代码逻辑。考虑使用SpringAOP。 前置通知:在日志文件中输出XXX在XXX时间发起了登录请求 切点:登录的业务方法 后置通知:在日志文件中输出XXX在XXX时间登录成功 建议使用SchemaBased方式实现。 (3) 功能实现: i. 在lib下导入AOP的jar包 ii. 在src下创建com.bjsxt.advice的包 iii. 在advice包中创建前置通知和后置通知 后置通知 package com.java.advice;import org.apache.log4j.Logger; import org.springframework.aop.AfterReturningAdvice;import java.lang.reflect.Method;public class MyAfter implements AfterReturningAdvice {Overridepublic void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {//获取Log4j的对象Logger logger Logger.getLogger(MyAfter.class);//日志输出if(o!null){logger.debug(objects[0]登录成功);}} }前置通知 package com.java.advice;import org.apache.log4j.Logger; import org.springframework.aop.MethodBeforeAdvice;import java.lang.reflect.Method;public class MyBefore implements MethodBeforeAdvice {Overridepublic void before(Method method, Object[] objects, Object o) throws Throwable {//获取Log4j的对象Logger logger Logger.getLogger(MyBefore.class);//日志输出logger.debug(objects[0]发起了登录请求);} }iv. 在src下声明log4j.properties配置文件 log4j.rootCategoryinfolog4j.logger.com.bjsxt.mapperdebug, CONSOLE,LOGFILE log4j.logger.com.bjsxt.advicedebug, CONSOLE,LOGFILE log4j.appender.CONSOLEorg.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layoutorg.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern- %c-%d-%m%nlog4j.appender.LOGFILEorg.apache.log4j.FileAppender log4j.appender.LOGFILE.FileD:/axis.log log4j.appender.LOGFILE.Appendtrue log4j.appender.LOGFILE.layoutorg.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern- %c-%d-%m%n v. 在applicationcontext.xml文件中配置通知bean以及组装规则 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd!--配置数据源bean--bean iddataSource classorg.springframework.jdbc.datasource.DriverManagerDataSourceproperty namedriverClassName valuecom.mysql.jdbc.Driver/propertyproperty nameurl valuejdbc:mysql://localhost:3306/502/propertyproperty nameusername valueroot/propertyproperty namepassword value1234/property/bean!--配置工厂bean--bean idfactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource/property/bean!--配置mapper扫描bean--bean idmapper classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namesqlSessionFactory reffactory/propertyproperty namebasePackage valuecom.bjsxt.mapper/property/bean!--配置业务层bean--!--用户登录--bean idus classcom.bjsxt.service.impl.UserServiceImplproperty nameuserMapper refuserMapper/property/bean!--配置信息校验--bean idcheckAccountService classcom.bjsxt.service.impl.CheckAccountServiceImplproperty namecheckAccountMapper refcheckAccountMapper/property/bean!--配置通知bean--bean idbefore classcom.bjsxt.advice.MyBefore/beanbean idafter classcom.bjsxt.advice.MyAfter/bean!--配置AOP组装规则--aop:configaop:pointcut idmp expressionexecution(* com.bjsxt.service.impl.UserServiceImpl.userLoginService(String,String))/aop:advisor advice-refbefore pointcut-refmp/aop:advisoraop:advisor advice-refafter pointcut-refmp/aop:advisor/aop:config!--开启cglib代理模式--aop:aspectj-autoproxy proxy-target-classtrue/aop:aspectj-autoproxy /beans
http://www.yutouwan.com/news/494013/

相关文章:

  • 网站备案时核验单苏州 规划建设局网站
  • 国外做西餐的网站打开网站很慢
  • 视频代做网站外包加工网手工活
  • 需要注册的企业网站企业网站建设的劣势
  • 中国贸易网官网手机版曲靖seo建站
  • 网站建设与维护是什么内容网络服务主要包括哪几项
  • 平台营销型网站建设wordpress音乐小工具
  • 做网站需要学会哪些wordpress 轮播图代码
  • 济源网站建设的公司少儿编程加盟店8
  • 哪个网站衬衣做的好如果在阿里云上做自己的网站
  • 公司域名更改 网站怎么做提示一直在做竞价的网站是不是不需要做seo
  • 昆明网站制作费用wordpress设置图标
  • wordpress 双语网站电子商务网站开发实训总结
  • 深圳开发网站开发中国建设银行手机银行网站
  • 珠海网站建设王道下拉強福州思企互联网站建设公司怎么样
  • 山东网站建设网络公司html5做手机网站
  • 个性定制网站有哪些wordpress文件上传
  • 做游戏交易网站有哪些宝安沙井海岸城
  • 网站建设及推广衬胶蝶阀付费做网站关键词优化是怎么做的呀
  • 门户网站产品设计方案wordpress 小程序开发
  • 临武网站建设wordpress前台主题切换
  • 江门做公司网站婚纱摄影网站定制
  • 网站建设使用的技术威海住房和城乡建设厅网站首页
  • wap 网站源码三亚做网站哪家好
  • wordpress设置网站背景图片蚌埠的网站建设
  • 东莞市外贸网站建设平台中国会展公司排名前十的公司
  • 企业网站空间买虚拟主机网站建设和
  • 色轮配色网站做网站软件war
  • 网站建设公司douyanet开发一款游戏软件需要多少钱
  • 网页网站建设的ppt深圳龙华区是富人区吗