在新用户提交"新帐户"表单后,我想手动将该用户登录,这样他们就不必在后续页面上登录.
通过spring安全拦截器的普通表单登录页面工作得很好.
在新帐户形式的控制器中,我正在创建UsernamePasswordAuthenticationToken并手动在SecurityContext中设置它:
SecurityContextHolder.getContext().setAuthentication(authentication);
Run Code Online (Sandbox Code Playgroud)
在同一页面上,我稍后检查用户是否已登录:
SecurityContextHolder.getContext().getAuthentication().getAuthorities();
Run Code Online (Sandbox Code Playgroud)
这将返回我之前在身份验证中设置的权限.一切都很好.
但是当我加载的下一页上调用相同的代码时,身份验证令牌就是UserAnonymous.
我不清楚为什么它没有保留我在上一个请求中设置的身份验证.有什么想法吗?
只是寻找一些可能有助于我了解这里发生了什么的想法.
我偶然在项目文件夹中添加了9000多张照片.并承诺他们.然后从磁盘中删除它们.承诺.
现在我尝试将更改推送到git服务器.但它需要太长时间并尝试发送12 Gb的数据.
我检查了磁盘上的文件大小,看到真正的.git文件夹需要12 Gb.
如何从那里删除照片?我试过了git rm,但失败了:
? git rm public/photos
fatal: pathspec 'public/photos' did not match any files
Run Code Online (Sandbox Code Playgroud)
因为我已经从磁盘上删除了它们,但它们仍然在.git文件夹中.
我试图添加public/photos到.gitignore:
public/photos/
*.zip
Run Code Online (Sandbox Code Playgroud)
但没有结果.当然,我可以hard reset head在我的项目中没有这么多垃圾照片.但从那时起我多次承诺并在代码中做了很多改变.
我正在使用django来构建一个简单的网站.当您键入基地址(现在是127.0.0.1:8000/)时,我使用django显示一个视图,该视图会执行一些检查并根据您的用户权限重定向您.(如果你有管理员权限,你去/admin,如果你不去/home,如果你没有登录,你去/login.)
当我发出HTTP请求时,我会被重定向,但我也会在django日志中看到以下两个错误:
('\x16\x03\x01\x00\x95\x01\x00\x00\x91\x03\x01N\xaa\x9c\x08\x96\x7f\x92\xe9Z\x925\xcaY4\xa6\xa5\xab\xf2\x16\xfaT\x89\xe7\x8a\xc3\x99J)6\xfb\xc44\x00\x00H\xc0')"??N????Z?5?Y4?????T??ÙJ)6??4H?" 400 -我将第一个中的十六进制翻译为(为了易读性添加了空格): SYN ETX NUL NUL U SOH NUL NUL Q ETX NUL N 170 156 X r 246 STX 141 214 ? 143 EOT FS j 142 223 s 241 220 < 185 \ \ m 242 &
我当然可以看到为什么服务器不喜欢这个请求,但我不知道它来自哪里.
有任何想法吗?
非常感谢.
==============
以下是视图的代码:
def index(request):
user = request.user
admin_courses = []
if (user.is_authenticated()):
u_id = user.getUserId()
my_enrollment = Enrollment.objects.filter(user_id=u_id)
admin_enrollment = my_enrollment.filter(type="ADMIN")
for …Run Code Online (Sandbox Code Playgroud) 为什么只需更新此表以添加列需要一个多小时?该表有15M行.它有2个索引和一个主键.ALTER TABLE查询现在处于"复制到tmp表"状态1小时15分钟.
ALTER TABLE `frugg`.`item_catalog_map`
ADD COLUMN `conversion_url` TEXT NULL DEFAULT NULL
Run Code Online (Sandbox Code Playgroud)
表:
mysql> describe item_catalog_map;
+------------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+-------+
| catalog_unique_item_id | varchar(255) | NO | PRI | NULL | |
| catalog_id | int(11) | YES | MUL | NULL | |
| item_id | int(11) | YES | MUL | NULL | |
| price | decimal(10,2) | YES | | 0.00 | |
+------------------------+---------------+------+-----+---------+-------+
mysql> …Run Code Online (Sandbox Code Playgroud) 最简单的例子:
我有一个调度程序servlet配置为捕获所有内容:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我有一个简单的测试控制器:
@RequestMapping("/index")
@ResponseBody
public String rootTest(){
return "Main page displayed from TestController";
}
Run Code Online (Sandbox Code Playgroud)
在这个测试用例中,我将以下行添加(或删除)dispatcher-servlet.xml:
<mvc:resources mapping="/public/**" location="/public/"/>
Run Code Online (Sandbox Code Playgroud)
我的崇高目标:提供静态内容(图像,css,js)以及我的动态内容(通过Jetty servlet容器中的Velocity生成,与全能的Spring捆绑在一起).
我的困境:当我添加时,<mvc:resources .../>我得到404 http://localhost/index,但我可以从http://localhost/public/img/42.png提供图片.如果我删除<mvc:resources .../>然后http://localhost/index工作正常,但当然,我如何提供静态内容?
奖金问题:为什么我从来没有吃过蛋糕呢?
我正在尝试List<Pojo>通过Spring Rest模板封送列表:对象.
我可以传递简单的Pojo对象,但我找不到任何描述如何发送List<Pojo>对象的文档.
Spring正在使用Jackson JSON来实现HttpMessageConverter.杰克逊的文档涵盖了这一点:
除了绑定到POJO和"简单"类型之外,还有一个附加变体:绑定到通用(类型)容器的变体.这种情况需要特殊处理,因为所谓的类型擦除(Java用于以某种向后兼容的方式实现泛型),这会阻止您使用类似
Collection<String>.class(不能编译)的东西.因此,如果要将数据绑定到a
Map<String,User>,则需要使用:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() {});其中
TypeReference只需要通过通用类型定义(经由anynomous内部类在这种情况下):在重要的部分是<Map<String,User>>限定类型结合.
这可以在Spring模板中完成吗?我瞥了一眼代码,它让我不是,但也许我只是不知道一些技巧.
解
由于下面的有用答案,最终解决方案是不发送List,而是发送一个简单扩展List的对象,例如:class PojoList extends ArrayList<Pojo>.Spring可以成功封送这个Object,它完成了与发送一样的东西List<Pojo>,尽管它不是一个简洁的解决方案.我还在春季发布了一个JIRA,以便他们在HttpMessageConverter界面中解决这个缺点.
如果我们:
1)计算网络适配器级别的字节/位(通过NIC的原始位数),以及
2)所有HTTP/S请求/响应中的计数字节.
假设只有HTTP/S流量,并假设统计相关数量的"典型"网络流量:
我想知道,由于额外的网络开销,NIC级别的流量将比HTTP/S级别(计算http报头和所有级别)计算多少.
class MyClass implements Serializable {
transient int myTransient;
//Other variables
}
Run Code Online (Sandbox Code Playgroud)
当我恢复这个类时,我想myTransient手动初始化,但我只想使用默认序列化.
如何init()在不重写整个序列化机制的情况下将方法注入到对象恢复过程中,因为它似乎Externalizable会让我这样做?
只是为了理解Spring事务的工作原理,我想知道在下面的情况下会发生什么,其中一个方法被标记为@Transactional调用另一个标记为的方法@Transactional.
假设配置使用所有默认设置.
@Service("myService")
@Transactional
public MyService{
public void myServiceMethod(){
myDAO.getSomeDBObjects();
}
}
@Repository("myDAO")
@Transactional
public MyDAOWithUsesBeyondMyService{
public void getSomeDBObjects(){...}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我要输入MyService.myServiceMethod()它,显然会启动一个交易.然后,钻进myDAO.getSomeDBObjects()会发生什么?交易已经存在的事实会导致没有新的交易产生,或者我在这里创建两个交易?
关于传播的文档(引用如下)似乎涵盖了这一点,但我想验证我的理解,这对于我的处女大脑来说有点多了解一下.
传播:通常,在事务范围内执行的所有代码都将在该事务中运行.但是,您可以选择在事务上下文已存在时执行事务方法时指定行为.例如,代码可以继续在现有事务中运行(常见情况); 或者可以暂停现有交易并创建新交易.Spring提供了EJB CMT中熟悉的所有事务传播选项.要了解Spring中事务传播的语义,请参见第10.5.7节"事务传播".
我是一名java开发人员,没有经验丰富,但我对大多数概念都很熟悉.
我最近使用Tomcat/JSP(~30个动态页面)构建了一个网站.我犯了新的错误,在JSP中包含大部分核心逻辑,使用合理化,它只是"一个简单的项目".
我学到了很多困难.因此,我现在使用servlet在谷歌应用引擎中重新构建应用程序,并计划使用Velocity使用模型 - 视图 - 控制器设计模式实现它.
我也在看Struts,但之前没有使用过这个框架.
有人能说服我为什么要将struts纳入这个项目吗?对于一两个人的中型项目,真的会给我买很多东西吗?
在有额外学习曲线的情况下,有一个明显的成本,它的好处是否会超过成本?或者Velocity的使用是否足以隔离逻辑?意见?
java ×6
spring-mvc ×3
spring ×2
alter-table ×1
ascii ×1
bandwidth ×1
collections ×1
django ×1
git ×1
hex ×1
http ×1
jackson ×1
jsp ×1
mysql ×1
networking ×1
sql ×1
struts2 ×1
transactions ×1
velocity ×1
web-traffic ×1