Just print selected
conditionally whenever the associated request parameter has exactly the same value.
<option value="<%=pm.getsmthing()%> <%=(pm.getsmthing().equals(request.getParameter("PID")) ? "selected" : "")%>><%=pm.getName()%></option>
Do not store it in the session. It would affect all pages in all browser tabs/windows in the same session which may result in "wtf?" experiences of the enduser.
Unrelated to the concrete problem, that's pretty an oldschool way of writing JSPs. Learn JSTL and EL. Your code would then look like this:
<select name="PID" id="PID" style="min-width: 100px;">
<c:forEach items="${List}" var="pm">
<option value="${pm.smthing}" ${pm.smthing == param.PID ? 'selected' : ''}>${pm.name}</option>
<option value="-1">Select a Property</option>
</c:forEach>
</select>