java.net.URLConnection
在这里经常询问使用情况,Oracle教程对此非常简洁.
该教程基本上只显示了如何触发GET请求并读取响应.它没有解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等.
那么,我如何使用java.net.URLConnection
触发和处理"高级"HTTP请求?
这是我的commandLink
工作方式
<p:dataTable value="#{myBean.users}" var="item">
<p:column>
<h:commandLink value="#{item.name}" action="#{myBean.setSelectedUser(item)}" />
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
然后在 myBean.java
public String setSelectedUser(User user){
this.selectedUser = user;
return "Profile";
}
Run Code Online (Sandbox Code Playgroud)
假设用户名是Peter
.然后,如果我点击Peter
,我将设置selectedUser
为彼得的用户对象,然后重定向到配置文件页面,该页面现在呈现信息selectedUser
.我想仅使用创建相同的效果<h:outputText>
,因此我想到了GET请求.所以我这样做
<h:outputText value="{myBean.text(item.name,item.id)}" />
Run Code Online (Sandbox Code Playgroud)
那么text(String name, Long id)
方法就回来了
"<a href=\"someURL?userId=\"" + id + ">" + name + "</a>"
Run Code Online (Sandbox Code Playgroud)
剩下的就是创建一个servlet,捕获它id
,查询数据库以获取user
对象,设置为selectedUser
重定向.所以这是我的servlet
public class myServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long userId …
Run Code Online (Sandbox Code Playgroud) 背景信息:我的jsf页面中有一个文件上传小程序.这个小程序需要一个地址,它可以发送它的POST请求.(我无法编辑此帖子请求以添加更多字段或其他内容).然后我的servlet的post方法存储文件.托管bean无法完成此作业,因为必须使用@MultiPartConfig注释servlet,并且我无法将此批注添加到jsf托管bean.为了强制上传小程序使用相同的会话,我根据这篇文章在帖子请求中添加了一个名为jsessionId的URL属性.在我的servlet中,我现在能够访问会话范围的bean.
现在我有一个ViewScoped bean,我存储了一些我想在servlet中使用的表单输入数据,因为将这些输入添加到post请求不起作用(Applet是第三方项目(JUploadApplet),并且由于某种原因它没有无法添加其他表单数据.现在是否可以从servlet中访问ViewScoped bean?如果我将范围更改为SessionScope,我可以处理输入但是使用ViewScoped,如果我尝试像这样访问bean,我会得到一个NullPointerException:UploadBean uploadBean =(UploadBean)request.getSession().getAttribute("uploadBean");
java ×2
jsf ×2
jsf-2 ×2
applet ×1
http ×1
httprequest ×1
java-ee ×1
managed-bean ×1
servlets ×1