struts2 jsp页面给action实体赋值

实体A中有实体B的List对象 List bLlist
实体B中有实体C的List对象 List cList

我想在jsp中通过A.bList[0].cList[0].属性 A.bList[0].cList[1].属性
给cList赋值~~~ 可是到action中cList的长度一直是0 没赋上值....
想请教一下可能是什么原因.... 各个属性名都是对的 搜了好几遍..SOS~~~.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
struts2在ACTION中给checkboxlist赋值
[code="java"] action中 FreightPolicyQueryAction extends ActionSupport implements ServletRequestAware, ModelDriven<FreightPolicyQueryModel> ..... String[] insurance = new String[2]; insurance[0] = "1"; insurance[1] = "2"; LOG.info(insurance.length); getModel().setInsurance(insurance);//给驱动模型设置值 if (getModel().getInsurance() != null) { LOG.info(getModel().getInsurance().length); for (int i = 0; i < getModel().getInsurance().length; i++) { LOG.info(getModel().getInsurance()[i]); } } return "fpQueryInit"; [/code] [code="java"] <td width="75%"> <s:checkboxlist name="insurance" theme="simple" labelposition="right" list="#{'1':'国内','2':'进口'}" listKey="key" listValue="value"></s:checkboxlist> </td> [/code] 想实现的就是从action中给jsp设置checkboxlist的值...网上找了一下,好象设置同名的数组就可以了.我的insurance是在modeldriven中写的.
一个关于struts2传值的问题
在struts2中,一个userbean中5个属性action中都赋值,传到一个jsp页面,在那个页面中只有2个控件接收,再传回到action中来,那么这样其他3个值就没有了,为什么呢?
struts2迭代器遍历 action list值
action 代码: public class Test1 { private List<String> listString = new ArrayList<String>(); public List<String> getListString() { return listString; } public void setListString(List<String> listString) { this.listString = listString; } public String execute() throws IOException { // Configuration conf = new Configuration(); // FileSystem fSystem = FileSystem.get(URI.create("hdfs:/^de:9000"), conf); // Path path = new Path("/user/upload/"); // FileStatus[] list = fSystem.listStatus(path); // // for (FileStatus pFileStatus : list) { // listString.add(pFileStatus.getPath().getName()); // } listString.add("fsafsa"); listString.add("fsafsa"); System.out.println("fsafsa" + listString.size()); return "success"; } jsp页面代码 <s:iterator value="listString" var="info"> <tr><td><s:property value="info" /></td> </tr> </s:iterator> 在action中listString是有值得为什么到jsp页面中就不显示了 如果在JSP页面给iterator赋值的话 就可以显示 iterator 我尝试过网上说的很多方法了 基本上没用。。
struts2标签如何赋值到javascript代码中
比如后台action中 [code="java"] ... addActionMessage("消息"); return SUCCESS; [/code] 前台jsp中 [code="java"] <script language="JavaScript"> alert('<s:actionmessage />'); </script> [/code] 显示的是字符串 "<s:actionmessage />" 而不是我想要的 “消息” 有一种方法是在action中将字符串put到session中自己的指定key中,但我不能使用那种方法,我只能用struts的标签。 请指教,谢谢!
STRUTS中能否在JSP页面的ACITON转向中使用变量
<p><span style="font-size: small;">比如 我本来想达到下边表达式的效果: <br><br>&lt;html:form action="${entityName}" method="post"&gt; <br><br>就是说吧action的地址用变量赋值。可是结果是struts好像并不认这个${entityName}的变量。 <br><br>有什么解决办法么?或者用其他手段达到相同效果也好。 <br><br><br><br>以上如果有什么表达不清楚的我回根据回复更详细的说明的。</span></p> <p> </p>
怎么用action的返回值给ext中的隐藏域赋值?
大家好! 现在我想在前台放一个隐藏域,用户登录后,通过Action的返回值给这个隐藏域赋值。 我想了想。。。 如果我将隐藏域放在jsp中,通过struts2的ognl,我可以给隐藏域赋值。 如果我想把隐藏域放在ext中,那么,我怎么样才能得到后台model的返回值呢? 或者说,ext中怎么使用struts2中的标签库呢?
Dwr2 无法读取Struts2 ModelDriven的Action返回的值
根据JavaEye好人的文章我开练了DWR访问Struts2 的Action: 刚开始学DWR2.0,想让他访问Struts2的Action,从网上找了些资料,下载了人家修改编译好的Dwr4Struts2.jar,按照配置说明写了一个例子,使用属性驱动的方法, <script language="javascript"> function testDwr(){ DWRActionUtil.execute( {namespace:'/jsp', action:'UserLogin', executeResult:'false'}, 'loginform', writePage); } function writemodel(data){ alert("departure = "+data["uname"]); } </script> <form id="loginform" action="UserLogin.action" method="post"> <input type="text" size="20" name="uname" id="uname"> <input type="text" size="20" name="password" id="password"> <input type="button" value="TestDwr" id="button1" onclick="testDwr()"> </form> 以上代码可以工作,能够alert出我输入的uname。 但是如果使用ModelDriven模式,我new一个Object 的user,把 uname和password 赋值给user.uname和user.password,然使用 function testModelDwr(){ DWRActionUtil.execute( {namespace:'/jsp', action:'UserLogin', executeResult:'false'}, user, writePage); } 去发送请求,通过在ModelAction 里跟踪,能正确得到我传入的user对象,下面是我的ModelAction. public class ModelLoginAction extends ActionSupport implements ModelDriven <User>{ private static final long serialVersionUID = 1640375596297189219L; private User user = new User(); public String login() { UserManager um = new UserManager(); System.out.println(user.getUname()+"="+user.getPassword()); User login = um.login(user); if (login!=null) { return SUCCESS; } else { return ERROR; } } @Override public User getModel() { return user; } } 但是奇怪的是我使用 alert(data["uname"]) 弹出的是undifined。如果是alert(data)则是[object object]. 请指点该怎么显示ModelDriven返回的对象数据。
关于Struts 2的类型转换
一个业务需求是: 栏目与模板的关系是多对一的关系,增加栏目时,需要在页面中选择栏目所使用的模板。 栏目的PO: public class Testcolumn implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String colname; private Testtemplate temp; ………… } 模板的PO: public class Testtemplate implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String tempname; private String tempbody; private Set<Testcolumn> columns; ………… } 增加栏目的JSP包含如下代码: <s:form action="/test/test_coladd.action" method="post" > <s:textfield name="column.colname" label="栏目名称"/> <s:textfield name="column.coldesc" label="栏目描述"/> <s:select label="栏目使用模板" list="templist" name="column.temp.id" listKey="id" listValue="tempname" /> <s:submit value="新增"/> </s:form> 在后台的Action方法中,通过前台获取到了模板对象的id,那么我要么new一个带id属性的模板对象给栏目对象的这个模板属性赋值,要么使用Spring的BeanUtils使栏目的temp属性赋值。 Struts 2中能否直接对栏目的temp属性进行赋值。 我尝试着将JSP页面中的s:select修改为: <s:select label="栏目使用模板" list="templist" name="column.temp" listKey="id" listValue="tempname" /> 但出现后台错误。 请问大家这样的问题你们都是如何解决的?Struts 2是否具备这样的功能? [b]问题补充:[/b] 首先先谢谢各位的帮助,我在补充一下我的问题。 PO还是之前那样。 栏目的PO对象中关于模板的属性是一个模板对象,两者是多对一的关系。 当在页面上需要增加栏目(Testcolumn)时,首先点击增加按钮后,首先先进入Action的一个叫addjump(),方法从数据库中将所有的模板(Testtemplate)获取并封装到一个List中(public List<Testtemplate> templist;) 之后跳转到新增的JSP页面。 在页面中,通过填写栏目名称,并选择栏目所使用的模板之后,提交便可增加栏目对象。 这里说一下再Struts1时我的JSP页面。 <select name="tempid" style="width:230"> <logic:iterate id="templist" name="tempList"> <logic:equal name="templist" property="templatestate" value="1"> <option value='<bean:write name="templist" property="id"/>'><bean:write name="templist" property="templateName"/></option> </logic:equal> </logic:iterate> </select> 其中tempid是ActionFrom中的一个String属性。 public class TestcolumnActionForm extends ActionForm { private String id; private String colname; private String tempid; ………… } 之后将ActionFrom中获得的tempid取出,新增一个模板的PO对象,并将这个ID赋给它。然后在讲这个模板对象赋值给栏目对象,类似如下的代码: Testtemplate template = new Testtemplate(); template.setId(new Long(id)); column.setTemp(template); 使用Struts 2的后,不清楚Struts是否能直接将Testtemplate对象赋值到Testcolumn对象的属性中。 我写的<s:select>标签存在一定的错误,如果我想实现用户在前台一选择栏目,传到后台的Testcolumn就已经将其的Testtemplate赋值好,而不是只传回来一个模板的id。 [b]问题补充:[/b] <s:select label="栏目使用模板" list="templist" name="column.temp.id" listKey="id" listValue="tempname" /> listKey="id"传的是templist列表中各个模板对象的id值, 我想能否直接传递templist列表中的模板对象。
struts2无法获取request、session和application属性值
## 今天写作业:前台发送action到后台,利用ActionContext和ServletActionContext获取web资源,分别给request、session和application赋值属性,再返回前台页面,并显示对应的属性值。 ## 输出时无法显示request、session和application属性值。麻烦各位大神帮我看看谢谢。 ![图片说明](https://img-ask.csdn.net/upload/201609/21/1474442409_169557.png) ![图片说明](https://img-ask.csdn.net/upload/201609/21/1474442419_203928.png) # ParameterAction.java package cn.edu.xmut.action; import java.util.Map; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class ParameterAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String rp; private String sp; private String ap; public String add(){ return Action.SUCCESS; } @SuppressWarnings("unchecked") public String save(){ //1、ActionContext Map requestMap=(Map)ActionContext.getContext().get("request");//获取request的map requestMap.put("param", rp); ActionContext.getContext().getSession().put("param", sp); //获取session的map ActionContext.getContext().getApplication().put("param", ap); //获取application的map //2、ServletActionContext ServletActionContext.getRequest().setAttribute("param", rp); ServletActionContext.getRequest().getSession().setAttribute("param", sp); ServletActionContext.getServletContext().setAttribute("param", ap); return Action.SUCCESS; } //省略getter和setter方法 } # Struts.xml ``` <action name="parameter_add" class="cn.edu.xmut.action.ParameterAction" method="add"> <result name="success">add.jsp</result> </action> <action name="parameter_save" class="cn.edu.xmut.action.ParameterAction" method="save"> <result name="success">save.jsp</result> </action> <action name="parameter)*" class="cn.edu.xmut.action.ParameterAction" method="{1}"> <result name="success">{1}.jsp</result> </action> ``` # add.jsp ![图片说明](https://img-ask.csdn.net/upload/201609/21/1474442430_674939.png) # save.jsp ![图片说明](https://img-ask.csdn.net/upload/201609/21/1474442445_915944.png) # index.jsp ![图片说明](https://img-ask.csdn.net/upload/201609/21/1474442458_195024.png) 谢谢各位大哥了。
在struts2 的 modeldriven Action中根据表单提交的字段指定model的class,这样做可以么?
struts2 的 modeldriven Action中public Object getModel() 返回的是一个object 如果把Model的class name在代码中硬编码,对于每个model 就要写一个 action。我以前是给每个model的操作写相应的action和view,一般4组 create 、list、 update、 delete, 文件10多个,感觉太傻了 采用以下方式 ,让action 根据表单提交的信息来创建一个Model,这样可以修改配置文件,使得此class用于多个model的操作,更改配置文件即可 [code="java segment"] public class ProcessModelForm extends ActionSupport implements ModelDriven { private Class cl=null; private String poClassName; public String getPoClassName(){ return this.poClassName; } public void setPoClassName(String arg){ this.poClassName= arg; } public Object getModel() { Object tmpo=null; cl=null; try { cl = Class.forName(poClassName); tmpo = cl.newInstance(); } catch ( ClassNotFoundException ex ){ log.trace( ex + " Interpreter class must be in class path."); } catch( InstantiationException ex ){ log.trace( ex + " Interpreter class must be concrete."); } catch( IllegalAccessException ex ){ log.trace( ex + " Interpreter class must have a no-arg constructor."); } return tmpo; } [/code] 还需要更改interceptor stack,要在modelDriven interceptor之前为action class的poClassName属性赋值。我没有写新的interceptor, 在interceptor stack中使用"com.opensymphony.xwork2.interceptor.ParametersInterceptor"2次 ,interceptor 的名字要有区别:paramsfirst 和 params。 [code="struts.xml片段"] <interceptors> <interceptor name="paramsfirst" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/> <interceptor-stack name="theStack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="i18n"/> <interceptor-ref name="prepare"/> <interceptor-ref name="chain"/> <interceptor-ref name="debugging"/> <interceptor-ref name="paramsfirst"> <param name="excludeParams">dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="scopedModelDriven"/> <!--interceptor-ref name="modelDriven"/--> <interceptor-ref name="modelDriven"> <param name="refreshModelBeforeResult">true</param> </interceptor-ref> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="multiselect"/> <interceptor-ref name="staticParams"/> <interceptor-ref name="actionMappingParams"/> <interceptor-ref name="params"> <param name="excludeParams">dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack> </interceptors> [/code] 我对struts2还不是很熟悉,还有没有更优雅的方案? 可以在一个jsp result中怎么显示不同model的属性么???比如 在jsp中遍历model的属性并输出属性名字和值。。有谁这么做过么? 附件中是个demo,代码在里面,有ivy文件,需要下载所需要的jar(struts-2.1.8.1) 。
求助:这个Structs2 登录demo的action始终无法正常工作
错误:访问URL http://localhost:8080/Structs2/login.action HTTP Status 404 - /Structs2/login.action type Status report message /Structs2/login.action description The requested resource is not available. 代码: G:\Workspaces\MyEclipse\Structs2\WebRoot\login.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="login.action" method="post"> username:<input type="text" name="username"><br> password:<input type="password" name="password"><br> <input type="submit" value="submit"> </form> </body> </html> <?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"> G:\Workspaces\MyEclipse\Structs2\src\struts.xml <struts> <package name="struts2" extends="struts-default"> <action name="login" class="com.action.login.LoginAction"> <result name="success">/result.jsp</result> </action> </package> </struts> G:\Workspaces\MyEclipse\Structs2\src\com\action\login\LoginAction.java package com.action.login; public class LoginAction { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /** * 赋值之后会自动执行 * @return * @throws Exception */ public String execute() throws Exception { System.out.println("execute()"); return "success"; } } G:\Workspaces\MyEclipse\Structs2\WebRoot\WEB-INF\lib\web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> 跟着网上各种方法都解决不了,但是是跟着浪曦的视频做的,视频里的可以运行,自己的不行,求大神解答
页面获取ACTION的属性,页面不能弹出JS
action定义一个属性,get set后 对属性赋值,值是JS,页面用<s:property/>获取,结果不弹出JS 而是值 public class TestAction extends ActionSupport{ private ItestBiz testbiz=null; private String show=""; public String getShow() { return show; } public void setShow(String show) { this.show = show; } public ItestBiz getTestbiz() { return testbiz; } public void setTestbiz(ItestBiz testbiz) { this.testbiz = testbiz; } public String execute()throws Exception { int i=testbiz.getP(); System.out.println("iiiiiiiiiiiiiiiiiiiiii--->"+i); Person p=testbiz.getList(); System.out.println(p.getUsername()); System.out.println(p.getPassword()); System.out.println(p.getAddress()); show="<script>alert('你好吗?');</script>"; return SUCCESS; } } <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.custom.i18n.resources" value="globalMessages"> </constant> <constant name="struts.i18n.encoding" value="GBK"></constant> <package name="action" extends="struts-default"> <!-- 定义拦截器 --> <interceptors> <!-- 定义拦截器栈 --> <interceptor-stack name="filter1"> <!-- 引用默认的拦截器 --> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="filter1"></default-interceptor-ref> <action name="test" class="tttaction"> <result name="success">index.jsp</result> </action> </package> </struts> index.jsp页面 <%@ taglib prefix="s" uri="/struts-tags"%> <s:property value="show"/> 运行工程页面显示<script>alert('你好吗?');</script> 实际我想要的结果是 在页面弹出一个JS对话框 内容为 你好吗? 曾经搭建的框架是可以实现弹出的,现在刚进了一家公司,自己搭建框架的时候发现这样是不行了,现在只能用EL获取这个属性可以实现弹出,请问大家有什么办法可以解决吗? 知道的请告知我,谢谢 我QQ 350101319
有关struts2中的表单标签回显查询到对象的某个属性值
action中的方法: public String userEdit() { elecUser=elecUserService.findById(elecUser.getUserId()); // ActionContext.getContext().getValueStack().pop(); ActionContext.getContext().getValueStack().push(elecUser); return "userEdit"; } userEdit.jsp页面: 这是该页面的一个struts标签 性别:<td class="ta_01" bgColor="#ffffff"> <s:radio name="gender" list="%{#application.dataDict.dictionaryMap.gender}"></s:radio> </td> 其中application.dataDict.dictionaryMap.gender是数据字典中的Map集合,为什么载入这个页面后,它能默认的选中对应对象的性别选项,我可没有给它指定具体的值啊,而<input id="username" name="username" type="text" value="<s:property value="%{username}"/>" />在页面载入后有个值我能理解,因为这个值是我给它指定的,但那个性别的下拉选我就不知道是怎么回事了,我没给它赋值它都能自动对应的选上,除此之外我这样写的话:<input id="username" name="username" type="text" value="<s:property value="%{elecUser.username}"/>" />,这个表单项就不会显示对应对象的username的值了,这两点小弟有点儿迷糊,求大神指教。
从页面表单提交数据时,为啥没有经过类型转换类?求解
在进行类型转换测试时发现,在从页面提交参数到后台时,并没有进过我配置的类型转换器,但在将后台类中的属性输出到页面上时,经过了类型转换器。 有没有哪位骚年能指出错在哪里? 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> <package name="struts2" extends="struts-default"> <action name="LoginAction" class="com.st.action.LoginAction"> <result name="success">/result.jsp</result> </action> </package> </struts> 接受页面传过来的参数的是Customer类 public class Customer { private String username; private String password; private int age; public String getUsername() { System.out.println("从customer中取值username"); return username; } public void setUsername(String username) { System.out.println("往customer中赋值username"); this.username = username; } public String getPassword() { System.out.println("从customer中取值password"); return password; } public void setPassword(String password) { System.out.println("往customer中赋值password"); this.password = password; } public int getAge() { System.out.println("从customer中取值age"); return age; } public void setAge(int age) { System.out.println("往customer中赋值age"); this.age = age; } } Action类中存放的是Customer类型的属性 public class LoginAction extends ActionSupport { private Customer ct; public Customer getCt() { System.out.println("从Action中取值"); return ct; } public void setCt(Customer ct) { System.out.println("给Action中的属性赋值"); this.ct = ct; } @Override public String execute() { System.out.println("execute is invoked"); return SUCCESS; } @Override public void validate() { System.out.println("validate is invoked"); } } 下方是我的类型转换器的代码 public class CustomerConverter extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object value, Class toType) { System.out.println(toType.getName()); if(Customer.class==toType) { System.out.println("外转内"); String[] str = (String[])value; String username = str[0]; String password = str[1]; int age = Integer.parseInt(str[2]); Customer ct = new Customer(); ct.setUsername(username); ct.setPassword(password); ct.setAge(age); return ct; } else if(String.class==toType) { System.out.println(toType.getName()); System.out.println("内转外"); Customer ct1 = (Customer)value; String username = ct1.getUsername(); String password = ct1.getPassword(); String age = String.valueOf(ct1.getAge()); String info = "username is "+username+" password is "+password+" age is "+age; return info; } return null; } } properties文件也有配置就放在action的包中 ct=com.st.converter.CustomerConverter 提交表单后,页面输出ognl.NoConversionPossible
struts2迭代时,为什么迭代出来的值什么也没有迭代出来呢?
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix = "s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> myJsp <table width="400" height="300" border="1"> [color=red] <s:iterator value="subList" status="index"> <tr> <td><s:property value="#index.index"/></td> <td><s:property value="sbuscriberkey"/></td> <td><s:property value="applytime"/></td> <td><s:property value="expiretime"/></td> </tr> </s:iterator>[/color] </table> </body> </html> public class QuerySubscriber { private IAisBusBIZ aisBusBIZ; public IAisBusBIZ getAisBusBIZ() { return aisBusBIZ; } public void setAisBusBIZ(IAisBusBIZ aisBusBIZ) { this.aisBusBIZ = aisBusBIZ; } public void querySubscriber(){ List<Subscriber> list = aisBusBIZ.querySubscriber(); ServletActionContext.getRequest().setAttribute("subList", list); } public String execute(){ querySubscriber(); return "success"; } } <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default"> <action name="login" class="queryAction" method="execute"> <result name="success">/index.jsp</result> </action> </package> </struts> [b]问题补充:[/b] struts2我采用了spring进行代理,如果我设置一个list属性,那么我需要在spring初始时给属性赋值的啊.
struts1 actionform中的数组如何对bean赋值
JSP中有一个form表单, [code="html"] <tr> <th>使用部门<br />User Dept</th> <th>成本中心<br />Cost Center</th> <th colspan=5>说明/用途<br />Explanations/Purpose</th> <th colspan=2>金额<br />Amount</th> </tr> <tr> <td><input type="text" name="user_dept"/> </td> <td><input type="text" name="cost_center" size="20"/> </td> <td colspan="5"><input type="text" name="explanations" size="100"/> </td> <td colspan="2"><input type="text" name="amount" size="30"/> </td> </tr> <tr> <td><input type="text" name="user_dept"/> </td> <td><input type="text" name="cost_center"/> </td> <td colspan="5"><input type="text" name="explanations" size="100"/> </td> <td colspan="2"><input type="text" name="amount" size="30"/> </td> </tr> <tr> <td><input type="text" name="user_dept"/> </td> <td><input type="text" name="cost_center"/> </td> <td colspan="5"><input type="text" name="explanations" size="100"/> </td> <td colspan="2"><input type="text" name="amount" size="30"/> </td> </tr> <tr> <td><input type="text" name="user_dept"/> </td> <td><input type="text" name="cost_center"/> </td> <td colspan="5"><input type="text" name="explanations" size="100"/> </td> <td colspan="2"><input type="text" name="amount" size="30"/> </td> </tr> [/code] [size=medium] 这个form提交到action以后,如果是单个form时可以使用以下方法 [/size] [code="java"] BeanUtils.copyProperties(Form, bean); [/code] [size=medium] 对于数组对象如何把值赋值到bean里面? [/size]
EL表达式取值问题 求指教!!!
一个Struts的Action跳转到一个JSP页面并传递usersList的用户链表参数,现在我想在JSP页面中的js脚本中用EL表达式来取usersList中的第i个元素,我是这么写的: [code="java"] <script type="text/javascript"> var i=0; //若干代码,i被赋值 var name = "${usersList["+ i +"].username}" //不行,应该如何写呢? </script> [/code] 求指教!
哪位帮忙分析下我的SSH小工程,非常感谢
WEB-INF/applicationContext.xml [code="java"]<?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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="dataSource" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db?useUnicode=true&amp;characterEncoding=UTF-8"/> <property name="user" value="root" /> <property name="password" value="root" /> <property name="maxPoolSize" value="50" /> <property name="minPoolSize" value="1" /> <property name="initialPoolSize" value="1" /> <property name="maxStatements" value="0"/> <property name="maxIdleTime" value="20" /> </bean> <bean id="sessionFactory" name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mappingResources"> <list> <value>model/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.use_sql_comments">false</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.jdbc.batch_size">20</prop> </props> </property> </bean> <bean id="transactionManager" name="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <bean id="transactionInterceptor" name="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <props> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="BeanNameAutoProxyCreator" name="BeanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>mgr</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean> <bean id="mgr" name="mgr" class="service.UserManagerImpl"> <property name="userDAO" ref="userDAO" /> </bean> <bean id="userDAO" name="userDAO" class="dao.user.UserDAOHibernate"> <property name="sessionFactory" ref="sessionFactory" /> </bean> </beans>[/code] WEB-INF/web.xml [code="java"] <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <!-- 用于初始化Spring容器的Listener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true </param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts-cleanup</filter-name> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> [/code] model.User.java [code="java"]package model; public class User { private int Id; private String username; private String password; public int getId() { return Id; } public void setId(int id) { Id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }[/code] model/User.hdm.xml [code="java"]<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-access="field" package="model"> <class name="User" table="admin"> <id name="Id" column="Id"> <generator class="identity" /> </id> <property name="username" column="username" not-null="true" generated="never" lazy="false" unique="true"/> <property name="password" column="password" not-null="true" generated="never" lazy="false" /> </class> </hibernate-mapping> [/code] login.jsp [code="java"]<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@taglib prefix="sx" uri="/struts-dojo-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <script type="text/javascript"> function refresh() { document.getElementById("authImg").src = "authImg?d=" + new Date().getTime(); } </script> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <sx:head/> <title><s:text name="%{getText('loginPage')}" /></title> </head> <body> <div style="color: red"> <s:actionerror/> </div> <s:form action="Login" method="post" name="form" onsubmit="return validate(document.form)"> <s:textfield label="%{getText('username')}" name="username" value="" cssStyle="width:150px;" /> <s:password label="%{getText('password')}" name="password" value="" cssStyle="width:150px;" /> <s:textfield label="%{getText('vercode')}" name="vercode" value="" cssStyle="width:150px;" /> <s:submit value="%{getText('login')}"/> </s:form> 验证码如图:<img src="authImg" id="authImg"/>看不清?<a href="#" onClick="refresh()">单击此处刷新</a> </body> </html>[/code] action.LoginAction.java [code="java"]package action; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; public class LoginAction extends BaseAction { private static final long serialVersionUID = 1L; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getVercode() { return vercode; } public void setVercode(String vercode) { this.vercode = vercode; } @SuppressWarnings("unchecked") public String execute() throws Exception { Map session = ActionContext.getContext().getSession(); String ver = (String)session.get("authImg"); if (ver.equals(vercode)) { int userId = mgr.loginValid(username,password); if (userId > 0) { return SUCCESS; } else { addActionError(getText("noMatch")); } } else { System.out.println("0k3"); addActionError(getText("vercodeErr")); } return "failure"; } private String username; private String password; private String vercode; } [/code] UserDAOHibernate.java [code="java"]package dao.user; import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import model.User; public class UserDAOHibernate extends HibernateDaoSupport implements UserDAO { @SuppressWarnings("unchecked") public User findUserByNameAndPass(String username , String password) { List ul = null; try { [color=red]ul = getHibernateTemplate().find("from User au where au.username = ? and au.password = ?" ,new String[]{username,password});[/color] } catch(DataAccessException e) { System.out.println("数据访问异常"); e.printStackTrace(); } System.out.println(ul.size()); if (ul != null && ul.size() >= 1) { return (User)ul.get(0); } return null; } @SuppressWarnings("unchecked") public User findUserByName(String username) { [color=red] List ul = getHibernateTemplate().find("from User au where au.username = ?" ,username);[/color] if (ul != null && ul.size() >= 1) { return (User)ul.get(0); } return null; } @Override public User get(int id) { return (User)getHibernateTemplate().get(User.class, id); } } [/code] 问题描述,1.验证码不显示,2.但是后台能发现6位验证码,当正确的用户名,密码,和后台的验证码后,jsp页面出现: description The server encountered an internal error () that prevented it from fulfilling this request. exception java.lang.reflect.InvocationTargetException sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102) org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 控制台出现: 12:16:11,779 DEBUG SessionImpl:248 - opened session at timestamp: 12527289717 12:16:12,193 DEBUG JDBCTransaction:82 - begin 12:16:12,194 DEBUG ConnectionManager:444 - opening JDBC connection 12:16:12,197 DEBUG JDBCTransaction:87 - current autocommit status: true 12:16:12,200 DEBUG JDBCTransaction:90 - disabling autocommit 12:16:12,469 DEBUG JDBCTransaction:186 - rollback 12:16:12,471 DEBUG JDBCTransaction:227 - re-enabling autocommit 12:16:12,475 DEBUG JDBCTransaction:197 - rolled back JDBC Connection 12:16:12,476 DEBUG ConnectionManager:325 - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources! 12:16:12,480 DEBUG ConnectionManager:464 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)] 12:16:12,480 DEBUG ConnectionManager:325 - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources! 非常感谢大家。。。。。 [b]问题补充:[/b] liyaxi 现在异常没了,但是还是无法显示验证码图片 我的所有action都是默认命名空间,并且没有重命名的action 另外我生成图片的类是: [code="java"]package authImg; import java.io.*; import java.awt.*; import java.awt.image.*; import java.util.*; import javax.imageio.*; import javax.imageio.stream.ImageOutputStream; public class AuthImg { private static final long serialVersionUID = 1L; //设置图形验证码中字符串的字体和大小 private ByteArrayInputStream image;//图像 private String str;//验证码 public AuthImg() { init(); } /* * 取得AuthImg实例 */ public static AuthImg Instance(){ return new AuthImg(); } /* * 取得验证码图片 */ public ByteArrayInputStream getImage() { return this.image; } /* * 取得图片的验证码 */ public String getString() { return this.str; } /* * 生成随机颜色 */ private Color getRandColor(int fc, int bc) { Random random = new Random(); if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); } /* * 生成服务器响应的服务方法 */ public void init() { int width = 100, height = 18; //生成一张新图片 BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); //在图片中绘制内容 Graphics g = image.getGraphics(); Random random = new Random(); g.setColor(getRandColor(200, 250)); g.fillRect(1, 1, width - 1, height - 1); //设定背景色 g.setColor(new Color(102, 102, 102)); g.drawRect(0, 0, width - 1, height - 1); g.setFont(new Font("Arial Black", Font.PLAIN, 16)); //随机生成线条,让图片看起来更加杂乱 g.setColor(getRandColor(160, 200)); for (int i = 0; i < 155; i++) { int x = random.nextInt(width - 1); int y = random.nextInt(height - 1); int xl = random.nextInt(6) + 1; int yl = random.nextInt(12) + 1; g.drawLine(x, y, x + xl, y + yl); } for (int i = 0; i < 70; i++) { int x = random.nextInt(width - 1); int y = random.nextInt(height - 1); int xl = random.nextInt(12) + 1; int yl = random.nextInt(6) + 1; g.drawLine(x, y, x - xl, y - yl); } //用于保存系统生成的随机字符串 StringBuffer sRand = new StringBuffer(6); for (int i = 0; i < 6; i++) { String tmp = getRandomChar(); sRand = sRand.append(tmp); //将系统生成的随机字符添加到图形验证码图片上 g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110))); g.drawString(tmp, 15 * i + 10, 15); } //赋值验证码 this.str = sRand.toString(); g.dispose(); ByteArrayInputStream input = null; ByteArrayOutputStream output = new ByteArrayOutputStream(); //输出图形验证码图片 try { ImageOutputStream imageOut = ImageIO.createImageOutputStream(output); ImageIO.write(image, "bmp", imageOut); imageOut.close(); input = new ByteArrayInputStream(output.toByteArray()); }catch(Exception e){ System.out.println("验证码图片产生出现错误:" + e.toString()); } //赋值图像 this.image = input; } /* * 生成随机字符 */ private String getRandomChar() { int rand = (int) Math.round(Math.random() * 2); long itmp = 0; char ctmp = '\u0000'; switch(rand) { //生成大写字母的情形 case 1: itmp = Math.round(Math.random() * 25 + 65); ctmp = (char) itmp; return String.valueOf(ctmp); //生成小写字母的情形 case 2: itmp = Math.round(Math.random() * 25 + 97); ctmp = (char) itmp; return String.valueOf(ctmp); //生成数字的情形 default: itmp = Math.round(Math.random() * 9); return String.valueOf(itmp); } } } [/code] 产生图片的action是 [code="java"]package action; import java.io.ByteArrayInputStream; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import authImg.AuthImg; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class CreateCodeImgAction extends ActionSupport { private static final long serialVersionUID = 1L; public void setInputStream(ByteArrayInputStream inputStream) { this.inputStream = inputStream; } public ByteArrayInputStream getInputStream() { return inputStream; } public String execute() throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); //阻止生成页面被缓存,保证每次重新生成随机验证码 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Cache-Control", "no-store"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); AuthImg authImg = AuthImg.Instance(); // 取得带有随机字符串的图片 setInputStream(authImg.getImage()); // 取得随机字符串放入HttpSession System.out.println(authImg.getString()); ActionContext.getContext().getSession().put("authImg", authImg.getString()); return SUCCESS; } private ByteArrayInputStream inputStream; }[/code] struts.xml片段 [code="java"]<package name="non-authority" extends="struts-default"> <action name="Login" class="action.LoginAction"> <result name="success">/spread/spread1.jsp</result> <result name="failure">/login.jsp</result> </action> <action name="authImg" class="action.CreateCodeImgAction"> <result type="stream"> <param name="contentType">image/bmp</param> <param name="inputName">inputStream</param> </result> <result name="success">login.jsp</result> </action> </package>[/code]
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
阿里P8数据架构师:顶级开发者都在用什么数据库?
其实从去年已经隐隐约约感觉到数据库的有变化,只是没有想到变得这么快。今年的一些事情实实在在地给了某些数据库重击,如果以前去某数据库还是喊喊,然后该用还用,今年从传统领域刮起的去某数据库的风,已经开始了,并且后面的乌云密布也看得见。 最近看一篇国外的开源产品提供厂商的一篇文字,主要是在询问了他的几百位客户后得出了下图中的2019年数据库的使用趋势。 从图中可以看出,MySQL以38.9...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
互联网公司分布式系统架构演进之路
介绍 分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。 分布式:一个业务拆分成多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 例如:电商系统可以拆分成商品,订单,用户等子系统。这就是分布式,而为了应对并发,同时部署好几个用户系统,这就是集群 1 单应用架构 2 应用服务器和数据库服务器分离 单机负载越来越来,所以要将应用服务器和数据库服务器分离 3 应用服务...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
程序员需要了解的硬核知识之汇编语言(一)
之前的系列文章从 CPU 和内存方面简单介绍了一下汇编语言,但是还没有系统的了解一下汇编语言,汇编语言作为第二代计算机语言,会用一些容易理解和记忆的字母,单词来代替一个特定的指令,作为高级编程语言的基础,有必要系统的了解一下汇编语言,那么本篇文章希望大家跟我一起来了解一下汇编语言。 汇编语言和本地代码 我们在之前的文章中探讨过,计算机 CPU 只能运行本地代码(机器语言)程序,用 C 语言等高级语...
OpenCV-Python 绘图功能 | 七
目标 学习使用OpenCV绘制不同的几何形状 您将学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()等。 代码 在上述所有功能中,您将看到一些常见的参数,如下所示: img:您要绘制形状的图像 color:形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)对于蓝色。对于灰度,只需传递...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Fiddler+夜神模拟器进行APP抓包
Fiddler+夜神模拟器进行APP抓包 作者:霞落满天 需求:对公司APP进行抓包获取详细的接口信息,这是现在开发必备的。 工具:Fiddler抓包,夜神模拟器 模拟手机 安装APP 1.下载Fiddler https://www.telerik.com/download/fiddler Fiddler正是在这里帮助您记录计算机和Internet之间传递的所有HTTP和HTTPS通信...
小白学 Python 爬虫(42):春节去哪里玩(系列终篇)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...
一文带你看清 HTTP 所有概念
上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
[数据结构与算法] 排序算法之归并排序与基数排序
归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 基本思想 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
史上最牛逼的 Eclipse 快捷键,提高开发效率!
如果你在使用IDEA,请参考博主另外的一篇idea快捷键的博客。
如何快速打好Java基础?
二哥,我是一名大学生,专业是电力工程,但想自学 Java,如何快速打好基础呢? 微信上 tison 向我提出了这个问题。我想我是有资格来回答的,从北京奥运会那年开始学 Java,到现在已经有 10 多个年头了,真的是从一名编程白痴一步步走到现在的。 我在各大技术网站上分享了不少 Java 方面的原创文章,不知道影响了多少初学者,反正文章的留言中经常能看到他们由衷的感谢。现在每天仍然有不少同学(...
相关热词 c# singleton c#中类的默认值是 c#各种进制之间的转换 c# 正则表达式保留汉字 c#后台跨域 c#基础代码大全 c#指定combox选择 c#关系 mono c# 相差毫秒 用c#做一个简易计算器
立即提问