我在我的Web应用程序中使用Spring-MVC和Spring Security.它包括用户注册页面和私人用户面板.我现在设置了以下网址模式:
whatever/myapp/login 用户登录whatever/myapp/register?step=1 开始注册whatever/myapp/account/** 私人区域视图(页面)whatever/myapp/pending 注册后流程完成后显示的视图whatever/myapp/blocked 帐户被屏蔽的视图whatever/myapp/register/retry 如果注册失败,请允许重试 基本上,下面的这些URL应该要求用户身份验证,即需要登录:
whatever/myapp/account/** (私人区域页面)whatever/myapp/pending (此页面设置了一个定时器,可以重定向到/ account/home)whatever/myapp/register/retry使用Spring安全性非常简单.但是,无论通过Spring安全性进行用户身份验证,私有区域页面都应该是可访问的,具体取决于用户的当前帐户状态(存储在我的数据库中).
更具体地说:如果用户试图访问私有区域(/account/**)中的任何内容,则应根据状态向他显示相应的视图(重定向到适当的页面).我定义了这些状态:
suspended - 涉及待审视图enabled - 允许完全访问disabled - 这里不相关retry_allowed- 涉及重试视图blocked - 涉及帐户被阻止的视图目前,我有一个MVC拦截器设置/account/**,它检查用户状态,并重定向到适当的页面,但不知何故,我感觉这不是真正理想或适当的解决方案,因为我面临奇怪的行为,如多个控制器调用...而且我不太确定何时返回true/ false在preHandle()方法内.这是拦截器的代码片段:
@Override
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object arg2)
throws Exception {
IPanelUser pUser = (IPanelUser) SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();
// check principal first and then load from DB
// "suspended" is …Run Code Online (Sandbox Code Playgroud) 我曾多次阅读关于这个主题的春季文档,但有些事情对我来说仍然不清楚.文件说明:
如果要将(例如)HTTP请求作用域bean注入另一个bean,则必须注入AOP代理来代替作用域bean.也就是说,您需要注入一个代理对象,该对象公开与范围对象相同的公共接口,但也可以从相关范围(例如,HTTP请求)检索真实的目标对象,并将方法调用委托给真实对象.
配置示例如下:
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
<aop:scoped-proxy/>
</bean>
<bean id="userManager" class="com.foo.UserManager">
<property name="userPreferences" ref="userPreferences"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
这里,userManager bean的范围是singleton.所以,我想知道这个代理事物是否只适用于单例范围的bean,也就是说,如果你想将web-scoped bean注入单例bean,或者它也适用于原型bean?例如,如果userManager的范围是原型?
我问这个是因为我看到一些代码在不使用aop-proxy的情况下将会话范围的bean注入到原型中,但我不确定这是否正确...特别是那些在某些web-app中的DAO bean,scoped作为会话,它们被注入到原型范围的控制器中,用于多用户环境.这是正确的方法吗?一般来说,应该如何在Web应用程序环境中使用DAO/Service bean?
任何想法将不胜感激.
有没有办法将JasperServer集成/嵌入到另一个Web应用程序中?问题是应该以某种方式绕过JasperServer的登录页面.是否可以通过Web服务/ REST进行身份验证,跳过登录页面,然后在iframe中显示主服务器页面,或者出现这种情况?
谢谢.
我想知道并试图找出这两个设置:
proxy_buffers [number] [size];
Run Code Online (Sandbox Code Playgroud)
可能会影响(改善/降低)代理服务器的性能,以及是否更改缓冲区的大小,数量或两者......?
在我的特定情况下,我们讨论的是一个服务于动态生成的二进制文件的系统,其大小可能不同(约60 - 200kB).Nginx充当负载平衡器,在2个Tomcats面前充当发电机.我在Nginx的error.log中看到,使用默认缓冲区的大小设置,所有代理响应都缓存到文件中,因此我发现逻辑上是将设置更改为如下所示:
proxy_buffers 4 32k;
Run Code Online (Sandbox Code Playgroud)
并且警告消息消失了.
我在这里不清楚的是,如果我最好设置1个较大的缓冲区,或者几个较小的缓冲区......例如:
proxy_buffers 1 128k;vs proxy_buffers 4 32k;vs proxy_buffers 8 16k;等...
可能有什么不同,以及它可能如何影响性能(如果有的话)?
我是Java新手.我对Java可移植性感到困惑.
如果Java语言是可移植的,为什么enum在J2ME中未知?
我是一名C++程序员.在C++中,使用哪个平台或库并不重要.C++ language在所有平台上都没有变化.
我的目的是开发一个只使用原始类型的Java库int,String或者Array(像某个类似于库的东西Genetic algorithms).我想在移动和桌面应用程序中使用此库.但似乎 enum在所有平台上都不存在或其他一些关键字.
我想我误解了它的含义Java portability.
"Java is portable"是什么意思?
要么我错过了一些东西,要么就是它的工作原理......
也就是说,我实现了UserDetailsService,并将其分为(AppUser下面)spring实用类User,(实现UserDetails).如果重要,它会是这样的:
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
// try loading user by its name
SystemUser user = null;
try {
user = this.sysUserService.getByUsername(username);
if(user == null)
throw new UsernameNotFoundException("User not found!");
}
catch(Exception e) {
throw new DataRetrievalFailureException(
"Could not load user with username: " + username);
}
// load user rights, and create UserDetails instance
UserDetails res = new AppUser(user, getUserAuthorities(user));
return res;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用这种方法实现帐户锁定:
public class LoginFailureEventListenter …Run Code Online (Sandbox Code Playgroud) 我正在搞乱OpenPop,一个用C#编写的用于POP3邮件获取的库.它似乎工作正常,但我不明白如何在显式附加文件与邮件之间做出区分,以及像HTML内容邮件中的图片之类的东西.这个库将它们全部视为"附件".根据我的需要,我不会将HTML邮件中的图片视为附件.
来自图书馆文档:
MessagePart被认为是附件,如果
- 它不是保留文本而不是MultiPart消息或
- 它有一个Content-Disposition标题,表明它是一个附件
至少在理论上我应该做什么或搜索什么(因为我对邮件协议并不熟悉)?
我可以替换ABC(10,5)与(10)%(5)使用:
replaceAll("ABC\\(([^,]*)\\,([^,]*)\\)", "($1)%($2)")
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚怎么做ABC(ABC(20,2),5)或者ABC(ABC(30,2),3+2).
如果我能够转换为((20)%(2))%5如何转换回ABC(ABC(20,2),5)?
谢谢,j
我已经使用Java很长一段时间了,但有些事情对我来说仍然不太清楚,特别是涉及到泛型......
事情就是这样:我Search正在使用这个类(详见此处),构造如下:
public Search(Class<?> searchClass) {...}
Run Code Online (Sandbox Code Playgroud)
此外,我有一个参数化的通用包装器,如下所示:
public class HibernateSearch<E> extends Search implements Serializable {
public HibernateSearch(Class<E> entityClass) {
super(entityClass);
}
// ... omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要的是以下内容:我想创建参数化类,其中包含此类作为其字段,例如
public class BaseSelectorComposer<T> extends SelectorComposer<Window> {
private HibernateSearch<T> searchObject;
...
@Override
public void doAfterCompose(Window comp) throws Exception {
super.doAfterCompose(comp);
this.searchObject =
new HibernateSearchObject<T>( now what...??? );
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我认为,从给定的例子中我所面临的问题是显而易见的.
有人可以建议在这里可以做些什么,或者一些替代方案?
以下是我应该从我的java Web应用程序调用的.NET Web服务的通用示例SOAP请求:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<setAMRequestData xmlns="http://tempuri.org/">
<id>int</id>
</setAMRequestData>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码段从java控制台应用程序生成类似的东西:
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
...
SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();
SOAPConnection connection = sfc.createConnection();
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage sm = mf.createMessage();
SOAPHeader sh = sm.getSOAPHeader();
SOAPBody sb = sm.getSOAPBody();
sh.detachNode();
QName bodyName = new QName("http://tempuri.org/", "setAMRequestData", XMLConstants.DEFAULT_NS_PREFIX);
SOAPBodyElement bodyElement = sb.addBodyElement(bodyName);
QName n = new QName("id");
SOAPElement quotation = …Run Code Online (Sandbox Code Playgroud) java ×7
spring ×2
.net ×1
asp.net ×1
c# ×1
dao ×1
filter ×1
generics ×1
hibernate ×1
httpsession ×1
interceptor ×1
jasperserver ×1
javabeans ×1
login ×1
nginx ×1
openpop ×1
pop3 ×1
portability ×1
proxy ×1
recursion ×1
regex ×1
scope ×1
search ×1
soap ×1
soapui ×1
spring-mvc ×1
web-services ×1