request.getParameter("companyName"); é obter os dados enviados pelo formulário (o nome é companyName na primeira página do formulário)
request.getAttribute("cc") é obter os dados do seu setAttribute (o valor obtido é o valor do parâmetro cc que você mesmo salvou.)
Usado para parâmetros em hiperlinks. . request.getParameter(nome do parâmetro)
A classe HttpServletRequest possui o método getAttribute() e o método getParameter(). Os dois métodos têm as seguintes diferenças:
(1) A classe HttpServletRequest possui um método setAttribute(), mas nenhum método setParameter()
(2) Quando há um relacionamento de link entre dois componentes da Web, o componente vinculado obtém os parâmetros de solicitação por meio do método getParameter(). Por exemplo, supondo que haja um relacionamento de link entre Welcome.jsp e authenticate.jsp, Welcome.jsp. possui o seguinte Código:
<a href="authenticate.jsp?username=weiqin">authenticate.jsp </a>
ou:
<form name="form1" method="post" action="authenticate.jsp">
Por favor insira o nome de usuário: <input type="text" name="username">
<input type="submit" name="Enviar" value="Enviar">
</form>
Obtenha o parâmetro de solicitação username por meio do método request.getParameter("username") em authenticate.jsp:
<% String nomedeusuário=request.getParameter("nomedeusuário" %>);
(3) Quando há um relacionamento de encaminhamento entre dois componentes da Web, o componente de destino de encaminhamento compartilha os dados dentro do intervalo de solicitação com o componente de origem de encaminhamento por meio do método getAttribute(). Supõe-se que exista um relacionamento de encaminhamento entre authenticate.jsp e hello.jsp. authenticate.jsp espera passar o nome de usuário atual para hello.jsp. Primeiro chame o método setAttribute() em authenticate.jsp:
<%
String nome de usuário=request.getParameter("nome de usuário");
request.setAttribute("nome de usuário", nome de usuário);
%>
<jsp:forward page="hello.jsp" />
Obtenha o nome do usuário através do método getAttribute() em hello.jsp:
<% String nome de usuário=(String)request.getAttribute("nome de usuário" %>);
Olá: <%=nome de usuário %>
Considerando em um nível mais profundo, os dados passados pelo método request.getParameter() serão passados do cliente Web para o servidor Web, representando os dados da solicitação HTTP. O método request.getParameter() retorna dados do tipo String.
Os dados passados pelos métodos request.setAttribute() e getAttribute() existirão apenas dentro do contêiner da Web e serão compartilhados entre componentes da Web com um relacionamento de encaminhamento. Esses dois métodos podem definir dados compartilhados do tipo Object
Simplificando, o método request.getParamenter() usa o protocolo HTTP para transferir dados e só pode transferir informações do tipo String, enquanto o método request.setAttribtute() transfere dados no contêiner WEB e pode encaminhar qualquer tipo de informação do objeto. Por exemplo, se um servlet listAction quiser passar uma coleção LIST para list.jsp, ele deverá usar setAttribute.