sql注入后返回数据的问题

请教大神一个问题,如果调用接口里面的参数有sql注入,假如这个接口只返回指定数据,那么sql注入想查询更多的字段信息还会生效吗?

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SQl数据取的不完整是什么问题

SQL语句 结果显示的不完整 SELECT age AS 'tfmi_name', count( * ) AS 'tfmi_id' FROM ( SELECT CASE WHEN TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) >= 0 AND TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) <= 10 THEN '0-10' WHEN TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) >= 10 AND TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) <= 20 THEN '10-20' WHEN TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) >= 20 AND TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) <= 30 THEN '20-30' WHEN TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) >= 30 AND TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) <= 40 THEN '30-40' WHEN TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) >= 40 AND TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) <= 40 THEN '40-50' WHEN TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) >= 50 AND TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) <= 40 THEN '50-60' WHEN TIMESTAMPDIFF( YEAR, tcce_birthday, CURDATE( ) ) >= 60 THEN '60' END AS age, tfmi_id FROM tb_family_member_info LEFT JOIN tb_building_room ON tbr_id = tfmi_room_id LEFT JOIN tb_building_info ON tbr_building_id = tbi_id LEFT JOIN tb_grid_community_refer ON tgcr_buildiing_id = tbi_id LEFT JOIN tb_community_unit_info ON tgcr_unit_id = tcui_id LEFT JOIN tb_community_info ON tci_id = tci_id LEFT JOIN tb_grid_info ON tgcr_grid_id = tgi_id LEFT JOIN tb_community_center_info ON tgi_community_center_id = tgi_community_center_id WHERE tfmi_status <> 0 AND tgcr_status = 1 AND tcci_status = 1 AND tgi_status = 1 AND tic_status = 1 AND tbi_status = 1 AND tcui_status = 1 AND tbr_status = 1 ) a GROUP BY age

Python用pyodbc访问sqlserver插入数据出错

我不知道为什么老是成功一下失败一下, ![图片说明](https://img-ask.csdn.net/upload/201705/22/1495458424_728644.png) ![图片说明](https://img-ask.csdn.net/upload/201705/22/1495458597_54870.png) 还有就是用的是中文最容易出错,好不容易成功一次还乱码 ![图片说明](https://img-ask.csdn.net/upload/201705/22/1495458605_850819.png)

mybatis动态传入表名和字段名问题

mybatis动态传入表名和字段名会有sql注入的危险,如果我指定返回类型是不是就可以解决这个问题?

sqli-lab 输入?id=1'时,sql语句自动添加\

![图片说明](https://img-ask.csdn.net/upload/201911/29/1575004579_968620.png) 本人小白但根据资料注入http://localhost/sqlilabs/Less-1/?id=1' 时数据库应该查不到数据啊???SELECT * FROM users WHERE id='1'',但是浏览器里却没有报错?传到数据库里变成这个查询了SELECT * FROM users WHERE id='1\'' LIMIT 0,1?求大神解答。后面的练习也都是这样,没法往下做。

【求解】SPRING namedParameterJdbcTemplate为什么返回null?

使用spring jdbc 首先。 dataSource 用的C3P0 , 测试没有问题。 其次是DefaultService接口 public interface DefaultService { } 以及DefaultServiceImpl public class DefaultServiceImpl extends NamedParameterJdbcDaoSupport implements DefaultService{ } 我在spring中声明了这个类 <bean id="defaultService" class="x.x.x.DefaultServiceImpl"> <property name="dataSource" ref="dataSource"></property> </bean> 然后我还有一个类是BaseServiceImpl public abstract class BaseServiceImpl { private DefaultService defaultService; /** * @return the defaultService */ public DefaultService getDefaultService () { return defaultService; } /** * @param defaultService the defaultService to set */ public void setDefaultService (DefaultService defaultService) { this.defaultService= defaultService; } } 在spring中配置 <bean id="serviceBase" abstract="true"> <property name="defaultService" ref="defaultService" /> </bean> ---------------------------------------------------------------------------------------------- 接下来是业务SERVICE 有一个TestService public interface TestService { public List findDataList(Map params); } 以及他的实现类, 继承了BaseServiceImpl public class TestServiceImpl extends BaseServiceImpl implements TestService { /** * @descrption */ @Override public List findDataList(Map params) { String sql = "SELECT * FROM USERMARK WHERE ID = :id"; return this.getNamedParameterJdbcTemplate().query(sql, params, new QueryRowMapper()); } } 然后在spring中配置了 <bean id="testService" autowire="byName" parent="serviceBase" class="x.x.x.TestServiceImpl"/> ------ 在action里注入了这个testService, 没有问题注入成功, 进入到service里的findDataList方法了。 但是this.getNamedParameterJdbcTemplate() 返回为null 报了空指针。。 namedParameterJdbcTemplate在NamedParameterJdbcDaoSupport类中注入。 首先要说明的是dataSource没有问题, 其次是和BaseServceImpl是个抽象类也没有关系。 在线求教。。

ssm项目springmvc中加入websocke后mybatis不能注入mapper

spring——mybatis文件 ``` <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="autoCommitOnClose" value="true"/> <!-- property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/ --> <property name="initialPoolSize" value="${cpool.initialPoolSize}"/> <property name="minPoolSize" value="${cpool.minPoolSize}"/> <property name="maxPoolSize" value="${cpool.maxPoolSize}"/> <property name="maxIdleTime" value="${cpool.maxIdleTime}"/> <property name="acquireIncrement" value="${cpool.acquireIncrement}"/> <property name="idleConnectionTestPeriod" value="${cpool.idleConnectionTestPeriod}"/> <property name="acquireRetryAttempts" value="${cpool.acquireRetryAttempts}"/> <property name="maxStatements" value="${c3p0.maxStatements}"/> <property name="maxStatementsPerConnection" value="${c3p0.maxStatementsPerConnection}"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- mapper和resultmap配置路径 --> <property name="mapperLocations"> <list> <value>classpath:com/yuan/*/entity/*.mapper.xml</value> </list> </property> </bean> <!-- 设置扫描根路径也就是你的mybatis的mapper接口所在包路径; 凡是markerInterface这个接口的子接口都参与到这个扫描, 也就是说所有的mapper接口继承这个SqlMapper。--> <bean name="SqlMapper" class="com.yuan.framework.mapper.SqlMapper"> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.yuan.*.mapper"/> <property name="markerInterface" ref="SqlMapper" /> </bean> <!-- TransactionManager 事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!--启动spring事务注解功能--> <tx:annotation-driven transaction-manager="transactionManager" /> ``` springmvc文件 ``` <mvc:annotation-driven/> <!-- <mvc:resources location="/" mapping="/**"/> --> <!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 --> <context:component-scan base-package="com.yuan.*.controller" /> <bean id="myHandler" class="com.yuan.framework.websocket.WebsocketEndPoint"></bean> <websocket:handlers> <websocket:mapping path="/myHandler" handler="myHandler"/> <websocket:handshake-interceptors> <bean class="com.yuan.framework.websocket.HandshakeInterceptor"/> </websocket:handshake-interceptors> </websocket:handlers> <!-- <websocket:handlers > <websocket:mapping path="/sockjs/myHandler" handler="myHandler"/> <websocket:sockjs/> </websocket:handlers> --> <!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 --> </list> </property> <!-- 日期格式转换 --> <property name="webBindingInitializer"> <bean class="com.yuan.framework.util.DateConverter"/> </property> </bean> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp" /> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding"> <value>UTF-8</value> </property> <property name="maxUploadSize"> <value>32505856</value><!-- 上传文件大小限制为31M,31*1024*1024 --> </property> <property name="maxInMemorySize"> <value>4096</value> </property> </bean> ```

Spring Data Jpa,在使用@Query()注解进行查询,nativeQuery=true时,能否返回一个自定义实体类?

有个查询要多表联查,返回结果我只需要多个表中的几个字段,我在使用 ``` @Query(value="", nativeQuery=true) ``` 注解的时候,使用了nativeQuery,那怎么将返回的字段映射到一个自定时类中呢?

java里面我定义了一个DTO作为接收对象,也将他作为返回对象 ,这种结构合理吗?

dto接收我只用了两个字段,有没有必要说重新定义一个接收对象 ,不通用同一个dto

Map<String,String>接收到了mybatis查询的数据,并且能够获取到里面的int类型的值

Map《String,String》接收到了mybatis查询的数据,并且能够获取到里面的int类型的值,但是controller返回时报错Could not write JSON: java.lang.Integer cannot be cast to java.lang.String; 改成Map《String,Obect》就可以成功返回,我想知道为什么会这样? 我已经获取到数据了,map里面都是string为什么还要int转String ,实际上我知道Map《String,Object》 就能解决,我不明白的是为什么能够得到数据,却用不了,我用的时候需要用这个Map《string ,String》get到,用Object接收,然后再把Object转换为String

solr中query时显示字段不完整

我的schema.xml中配置了field data-config.xml中entity也配置了 但是query的时候只显示部分字段 这是schema.xml ![图片说明](https://img-ask.csdn.net/upload/201704/11/1491880221_743918.png) 这是data-config.xml ![图片说明](https://img-ask.csdn.net/upload/201704/11/1491879988_489834.png) 这是query出来的数据中的一条 ![图片说明](https://img-ask.csdn.net/upload/201704/11/1491880007_779820.png) query出来的数据只显示id,name,group_gmt_mt,group_gmt_ct, 其他字段,比如pid,route都是空的。 数据库中是有数据的

mybatis查询,用List<Bean>接受查不到数据,结果为null,但是数据库是有数据的

![图片说明](https://img-ask.csdn.net/upload/201712/02/1512183499_362616.png)

MyBatis中一个Dao接口文件如何对应多个SQL映射文件(Mapper)

&emsp;&emsp;在仅使用MyBatis框架的基础上(不与Spring等进行整合),我的项目中有一个接口UserDao,具体接口代码如下: &emsp;&emsp;当采用Mapper动态代理时,一般是创建一个SQL映射文件UserMapper.xml,然后将该SQL映射文件的mapper标签中的namespace设为该UserDao接口的类名,以此来实现Mapper动态代理。 &emsp;&emsp;最后在测试方法中通过SqlSession类实例对象sqlSession的getMapper(UserDao.class)方法获取该接口实现类,并调用接口中的方法完成对数据表的操作。 &emsp;&emsp;那么,现在我的问题是,如果现在想要两个SQL映射文件UserMapper1和UserMapper2均与UserDao接口文件相对应,该如何实现呢? &emsp;&emsp;本人Java新手,请各位大佬不吝赐教,小弟定当感激不尽。 &emsp;&emsp;UserDao接口代码 ```java package com.ccff.mybatis.dao; import com.ccff.mybatis.model.User; import java.util.List; public interface IUserDao { //查询所有用户,以List形式返回 public List<User> findAllUserToList(); } ``` &emsp;&emsp;UserMapper映射文件代码 ```xml <?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"> <mapper namespace="com.ccff.mybatis.dao.IUserDao"> <select id="findAllUserToList" resultType="User"> select * from user </select> </mapper> ```

用Spring,Springmvc,mybatis实现新用户注册并验证保存

注册,将新用户输入的信息提交并进行验证,验证可采用验证框架也可采用validate,验证失败返回注册页面显示错误信息,验证成功后保存用户数据。 登陆,验证,失败后返回登陆页面显示错误信息,验证成功后保存用户信息至session。 登陆成功后,将所有用户数据展示给用户,列出用户详细信息,并分页。用拦截器判断,如果没有登陆的话返回登陆页面并提示用户没有登陆 1、Ioc注入全部采用Spring注解型注入。 2、使用mybatis持久层完成对数据库的操作 3、显示request对象数据使用EL表达式 4、使用Ajax框架Jquery完成异步提交 5、页面表单提交使用SpringMVC的rest传值方式。 6、工程结构com.zxkj.common.model、com.zxkj.common.dao、com.zxkj.common.dao.impl、com.zxkj.common.service、com.zxkj.common.service.impl、com.zxkj.common.controller 用户信息分两表保存 控件以及页面控制使用El表达式和标准标签库 ajax采用Jquery完成异步提交 必要时,使用easyui美化渲染页面。 数据库使用SqlServer2000以上版本

出现错误:Subquery returns more than 1 row

这是一个进销存的出入库项目部分,现在问题不知道出在哪里,请各位大虾帮帮忙,帮忙看看 ``` java.sql.SQLException: Subquery returns more than 1 row at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330) at com.sxt.gmms.dao.instorage.InStorageDao.addInStorageAndItem(InStorageDao.java:40) at com.sxt.gmms.frame.instorage.instorage.InStorageFrame.actionPerformed(InStorageFrame.java:233) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) 这是项目的源代码 /** * 商品入库的DAO层 * * @author Administrator * */ public class InStorageDao { public void addInStorageAndItem(InStorage inStorage, List<InStorageItem> itemList) { Connection con = null; PreparedStatement stat = null; ResultSet rs = null; try { con = DBUtil.getConn(); // 设置自动提交为false con.setAutoCommit(false); // 先保存入库单 String inSql = "insert into iss_in(" + "in_code," + "in_date," + "in_status," + "emp_id)" + " values(?,?,?,(" + "select emp_id from iss_employee " + "where emp_name=?)) "; stat = con.prepareStatement(inSql, new String[] { "in_id" }); stat.setString(1, inStorage.getInCode()); stat.setDate(2, new java.sql.Date(inStorage.getInDate().getTime())); stat.setInt(3, inStorage.getInStatus()); stat.setString(4, inStorage.getEmp().getEmpName()); stat.executeUpdate();//出错了??? // 取得返回的入库单id int inId = 0; rs = stat.getGeneratedKeys(); if (rs.next()) { inId = rs.getInt(1); } // 再保存入库明细 String itemSql = "insert into iss_in_item(" + "in_item_price," + "in_item_qty," + "in_item_status," + "goods_id," + "in_id)" + "values(?,?,?," + "(select goods_id from iss_goods where goods_code = ?)," + "?)"; stat = con.prepareStatement(itemSql); for (InStorageItem inStorageItem : itemList) { stat.setFloat(1, inStorageItem.getInItemPrice()); stat.setInt(2, inStorageItem.getInItemQty()); stat.setInt(3, 1); stat.setString(4, inStorageItem.getGoods().getGoodsCode()); stat.setInt(5, inId); stat.executeUpdate(); } con.commit(); } catch (Exception e) { e.printStackTrace(); try { con.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } finally { DBUtil.closeConn(con, stat, rs); } } } ``` 这是数据库部分,用的是MySQL数据库,请各位大虾帮帮忙! ![图片说明](https://img-ask.csdn.net/upload/201605/11/1462948190_737156.png) ![图片说明](https://img-ask.csdn.net/upload/201605/11/1462948205_833102.png)

SSH整合过程中:service老是注入失败?

action对象是用struts2产生的,但是service老是注入失败,其他的dao注入正常,在action中通过getbean的方式可以正常获得service beans.xml如下: ``` <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <context:annotation-config /> <!-- 分散配置(配置配置文件的位置) --> <context:property-placeholder location= "classpath:jdbc.properties"/> <!-- 生成实例对象要扫描的包,扫描该包,将该包下的注解@Component的类实例化 --> <context:component-scan base-package="com.slg.surveypark.dao.impl,com.slg.surveypark.service.impl,com.slg.surveypark.struts2.action" /> <!-- 配置数据源 --> <bean id="dataSource" destroy-method="close" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxPoolSize" value="${c3p0.pool.size.max}"/> <property name="minPoolSize" value="${c3p0.pool.size.min}"/> <property name="initialPoolSize" value="${c3p0.pool.size.ini}"/> <property name="acquireIncrement" value="${c3p0.pool.size.increment}"/> </bean> <!--本地会话工程(spring整合 hibernate配置) --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 扫描一下包内的实体类,有@Entity注解与数据库形成映射 --> <property name="packagesToScan"> <list> <value>com.slg.surveypark.model</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <!-- hibernate.hbm2ddl.auto 当为update时根据java对象生成数据库里的表 --> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <aop:config> <aop:pointcut id="bussinessService" expression="execution(* *..*Service.*(..))" /> <aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <!-- 写操作 --> <tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT"/> <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT"/> <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT"/> <tx:method name="batch*" propagation="REQUIRED" isolation="DEFAULT"/> <!-- 读操作 --> <tx:method name="load*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/> <tx:method name="get*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/> <tx:method name="find*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/> <tx:method name="*" propagation="REQUIRED" isolation="DEFAULT" /> </tx:attributes> </tx:advice> </beans> ``` struts.xml ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 主题 --> <constant name="struts.ui.theme" value="simple" /> <!-- 开发模式 --> <constant name="struts.devMode" value="true" /> <package name="surveypark" namespace="/" extends="struts-default"> <action name="RegAction_*" class="com.slg.surveypark.struts2.action.RegAction" method="{1}"> <result name="regPage">/reg.jsp</result> <result name="input">/reg.jsp</result> <result name="success">/index.jsp</result> </action> </package> </struts> ``` action类 ``` package com.slg.surveypark.struts2.action; import javax.annotation.Resource; import org.apache.struts2.interceptor.validation.SkipValidation; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Scope; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Component; import com.slg.surveypark.model.User; import com.slg.surveypark.service.UserService; import com.slg.surveypark.service.impl.UserServiceImpl; import com.slg.surveypark.util.ValidateUtil; //@Component("regaction") //@Scope("prototype") //@Controller public class RegAction extends BaseAction<User> { /** * */ private static final long serialVersionUID = 1L; private User model = new User(); private String confirmPassword; public String getConfirmPassword() { return confirmPassword; } public void setConfirmPassword(String confirmPassword) { this.confirmPassword = confirmPassword; } protected UserService userService; public UserService getUserService() { return userService; } @Resource(name="userService") public void setUserService(UserService userService) { this.userService = userService; } @Override public User getModel() { // TODO Auto-generated method stub return model; } /** * * 这里添加了注解 @SkipValidation 所以会跳过默认的拦截器函数validate() */ @SkipValidation public String toRegPage(){ return "regPage"; } public String doReg(){ userService.saveEntity(model); return SUCCESS; } /** * struts2的默认验证拦截器,所有的action执行前都会执行此函数,除非有跳过注解,如果验证过程有有问题,则 * 终端action的执行过程,返回到struts2配置的“input”指向的页面 */ public void validate(){ if(!ValidateUtil.isValid(model.getEmail())){ addFieldError("email", "email是必填项!"); } if(!ValidateUtil.isValid(model.getNickName())){ addFieldError("nickname", "nickname是必填项!"); } if(!ValidateUtil.isValid(model.getPassword())){ addFieldError("password", "password是必填项!"); } if(hasErrors()){ return ; } if(!model.getPassword().equals(confirmPassword)){ addFieldError("password", "密码不一致!"); return ; } //通过getBean可以获得service // ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); // userService = (UserService)ctx.getBean("userService"); System.out.println(userService); if(userService.isRegisted(model.getEmail())){ addFieldError("email", "email已占用!"); return; } } } ``` service类 ``` package com.slg.surveypark.service.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import com.slg.surveypark.dao.BaseDao; import com.slg.surveypark.model.User; import com.slg.surveypark.service.UserService; import com.slg.surveypark.util.ValidateUtil; @Component("userService") public class UserServiceImpl extends BaseServiceImpl<User> implements UserService { @Resource(name="userDao") public void setDao(BaseDao<User> dao) { super.setDao(dao); } /** * 判断email是否被注册过 */ public boolean isRegisted(String email){ String hql = "select email from User where email =?"; List<User> users = this.findEntityByHQL(hql, email); return ValidateUtil.isValid(users); } } ``` 求指教

微信小程序请求、并发问题

wx.request(OBJECT) wx.request发起的是https请求。一个微信小程序,同时只能有5个网络请求连接。 我看到开发文档这样说 wx.request发起的是https请求。一个微信小程序,同时只能有5个网络请求连接。 那么,能支持上千个用户同时并发请求吗? 我要做的是需要不断的跟踪用户的定位信息,像滴滴打车那样的

用Spring SpringMVC MyBatis 实现用户注册登录并保存验证。 求代码 谢大神

注册,将新用户输入的信息提交并进行验证,验证可采用验证框架也可采用validate,验证失败返回注册页面显示错误信息,验证成功后保存用户数据。 登陆,验证,失败后返回登陆页面显示错误信息,验证成功后保存用户信息至session。 登陆成功后,将所有用户数据展示给用户,列出用户详细信息,并分页。用拦截器判断,如果没有登陆的话返回登陆页面并提示用户没有登陆 1、Ioc注入全部采用Spring注解型注入。 2、使用mybatis持久层完成对数据库的操作 3、显示request对象数据使用EL表达式 4、使用Ajax框架Jquery完成异步提交 5、页面表单提交使用SpringMVC的rest传值方式。 6、工程结构com.zxkj.common.model、com.zxkj.common.dao、com.zxkj.common.dao.impl、com.zxkj.common.service、com.zxkj.common.service.impl、com.zxkj.common.controller 用户信息分两表保存 控件以及页面控制使用El表达式和标准标签库 ajax采用Jquery完成异步提交 必要时,使用easyui美化渲染页面。 数据库使用SqlServer2000以上版本

Hibernate查询数据时出现的问题

相关参数:MyEclipse7,MySQL5,Hibernate 3.2,Spring 2.0,Struts 1.2. 问题概述:使用SSH搭建,提供了方法eqField(String field,String value),该方法使用QBC查询,field填写查询字段,value填写值,然后返回该实体的List,库中[字段=‘值’]的实体全部取出。但是在操作中出现了如下异常信息,我试图使用手工写HQL的方式,仍然不好用。 异常信息: org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of com.kupid.domain.Jbdata.id; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.kupid.domain.Jbdata.id 相关代码段: 项目实体使用Hibernate的反向工程从DB自动生成。 Jbcomment实体,其中有属性Jbdata,是自定义的一个BEAN。 [code="java"] public class Jbcomment implements java.io.Serializable { // Fields private String id; private Jbfield jbfield; private Jbdata jbdata; private String name; private Integer flag; private Date creatdate; private Date lastupdate; private String pre1; private String pre2; private String pre3; [/code] 实体Jbdata [code="java"] public class Jbdata implements java.io.Serializable { // Fields private String id; private Jbtype jbtype; private String name; private Date createrdate; private Date lastdate; private Integer flag; [/code] 在实体Jbcomment的操作实现类JbcommentDaoImpl中,提供了eqField方法,该类代码片段如下: [code="java"] public class JbcommentDaoImpl extends BaseDaoImpl<Jbcomment,String> implements JbcommentDao { public List<Jbcomment> findAll() { return (List<Jbcomment>) ht.execute(new HibernateCallback() { public Object doInHibernate(Session s) throws HibernateException, SQLException { Criteria c = s.createCriteria(Jbcomment.class); c.add(Restrictions.like("id","%")); return c.list(); } }); } public List<Jbcomment> eqField(final String field,final String value) { return (List<Jbcomment>) ht.execute(new HibernateCallback() { public Object doInHibernate(Session s) throws HibernateException, SQLException { Criteria c = s.createCriteria(Jbcomment.class); c.add(Restrictions.eq(field,value)); return c.list(); } }); } [/code] 在对应的Service中注入了上述JbcommentDaoImpl,其中getField_eq方法无任何差异的调用了eqField。 [code="java"] public class JbcommentServiceImpl implements JbcommentService { private JbcommentDao jbcommentDao; public List<Jbcomment> getField_eq(String field,String value) { return jbcommentDao.eqField(field, value); } [/code] 然后,某个操作调用了一个showDataDetail.do,其片段如下: [code="java"] public class ShowDataDetail extends Action { private JbcommentServiceImpl cmtsi; private JbfieldServiceImpl fieldsi; private JbdataServiceImpl datasi; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{ System.out.println("Create a detail"); try { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String dataId=request.getParameter("id"); String keywords=request.getParameter("keywords"); List<Jbcomment> list=cmtsi.getField_eq("jbdata", dataId); [/code] 在最后一行,取list的时候,异常出现了。 希望得到一个详细的,明确的分析。若是如:“详见XX书”,“答案可访问XX网”,“自己去看API”等回答,就不劳烦您了。 谢谢指教。 关于源码: 源码以问题附件的形式上传了,因为jar包超过了附件的10M限制而被剔除。 源码内包名domain,persist,service,actions,顾名思义不做多解释了。 jar包移出后传至Rayfile了,其下载地址为 http://www.rayfile.com/files/e8680f6e-c838-11de-ab98-0014221b798a/ 数据库以SQL校本形式导出,本人常用MySQL-Administrator,所以先用该工具导出,但由于该工具导出的脚步的DB倒回在其他工具中可能存在编码问题,于是又用Navicat导出了一份通用性好的 sql脚本.

为什么使用getHibernateTemplate().find()会出现空指针异常的错误?

配置文件没有错误,也都注入了,但是一直提示空指针异常…就不知道是哪里出了问题

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐